源文件下载地址:https://gitee.com/hwaust/WindGoes6/blob/master/Windgoes6/Data/CSV.cs
网上有很多CSV的读写类,这些类要么设计不合理,要么功能简单,要么内容不完整。为了方便在C#在对CSV中的操作,笔者进行了重新编写。此CSV类具有以下特点:
"
),逗号(,
), 换行符号(\r\n
)。/***************** 从文件初始化一个CSV文件 *****************/
// 初始化,可修改编码,如:new CSV(input, Encoding.Default);
// 加载后的数据在 csv.Data 中,其数据类型为 List<List<string>>
CSV csv = new CSV("C:\\input\\data.csv");
/***************** 从加载好的 csv.Data 中读取数据 *****************/
string v0_0 = csv.Data[0,0]
// 为了简化操作,可以用以下方式读取。注意:这两种方法都会对范围验证,如果数据不存在,则返回 null
string v3_5 = csv.GetData(3,5); // 将单元格(3,5)的内容为赋给 v3_5
string c0_1 = csv[0,1]; // 将单元格(0,1)的内容为赋给 c3_5
/***************** 从加载好的 csv.Data 中读取数据 *****************/
csv.SetData(2,6,"tom"); // 设置单元格(2,6)的内容为 "tom"
csv[1, 5] = "jack"; // 设置单元格(1,5)的内容为 "jack"
/***************** 添加一行数据 *****************/
// 向csv.Data追尾追加一行数据,长度为 ColumnCount,每个元素均为 ""。
csv.AddRow();
// 向csv.Data追加一行数据,如果 csv.ColumnCount 长度大于2,则不足部分用""补充。
csv.AddRow(new String[]{
"a", "b"});
// 向csv.Data的第5行追加一行数据,如果 csv.ColumnCount 长度大于2,则不足部分用""补充。
// 如果行号小于0,则在首行添加;如果大于最大长度则在末尾添加。
csv.AddRow(new String[]{
"a", "b"}, 5);
/***************** 删除列数据 *****************/
// 删除第11列数据,如果超出列的范围,则不做任何操作。
csv.RemoveColumn(10)
// 删除第1,3,8列数据。当有重复的列时,只删除一次。范围超出的不做操作。
csv.RemoveColumns(1, 3, 8, 3)
/***************** 保存数据 *****************/
csv.Save("c:\\output\\data1.csv");
目前主流都是采用wave port,但是wave port所占体积太大,有些地方还是需要用到lumped port的。如下图所示,现在要做一个功分器,但是位置不够放下wave port。在网上寻找设置方法,无果,遂查 HFSS help 文档。它是这样定义的:意思是:用一块PEC将两块地连接,lumped port一端接signal,另一端接PEC。如下图所示:大致结果如下(还没调好-_-!)..._带状线仿真端口设置
在学习ROS的cartographer建图时,基本都是仿真去实现的。近期公司项目有采购一个RoboSense(速腾)16线激光雷达,尝试接入激光雷达,在windows及Ubuntu18+ROS melodic下展示实时数据,并成功建图,现将实践历程分享记录在此。首先分享RoboSense16激光雷达相关资料,其中包括用户手册及windows系统下的RSView工具的绿色版本压缩包。_ubuntu18.04怎么打开rsview
首先,为什么要做无OS的LWIP呢?原因很简单,因为stm32f103c8t6只有20K的RAM,很难支持OS+LWIP。无OS的LWIP的一个优点是,可以提高单片机的以太网的响应速度。LWIP的介绍就不说了,网上查一大把。我的无OS移植LWIP基于ST官网的一个示例:STSW-STM32026 LwIP TCP/IP stack demonstration for STM3..._c8t6怎么配置lwip
前言:无论是网上的攻略还是以前的经验来说,都说UGUI需要进行动静分离。也就是说同一个界面下的UI,可活动的元素放在一个Canvas下,不可活动的元素放在另一个Canvas下。虽然两个Canvas打断了合批,但是却减少了网格的重建时间,总体上是有优化的。究其原因,是因为在同一个Canvas下的某个元素发生变化时,同一Canvas下的所有元素都会进行网格重建(ReBatch)。而静态的元素在..._ugui网格重建
1.可视区高宽度:_可视区和页面的区别在哪
之前在模拟器上能够正常连接,但是在小程序上,修改了三元之后,连接不上微信开发软件上连接不上解决方法连接地址加上地域,并且端口用80_腾讯物联网链接小程序怎么用
Qt Quick 常用控件:Button(按钮)用法及自定义_qt自定义按钮形状
应用场景:<head> <!-- link是标签,引入外部样式表 --> <link rel="stylesheet" href="./a.css"> <style> /* @import 在css环境中 导入外部css */ @import url('./b.css'); .box{ width: 100px; height: 100px; _"link rel=\"import"
在使用Delphi中的TClientSocket和TServerSocket进行通信编程时,当使用TClientSocket这方的客户端使用TClientSocket.close断开连接并退出程序时,使用TServerSocket这方的服务端有时会报‘’Asynchronous socket error 10053‘这个错误,查阅了这个错误说明:Software caused connection_asynchronous socket error 10053
clear allclcclose all[x,y,z]=peaks(60);h=bar3(z,1)for i = 1:length(h)zdata = get(h(i),'ZData');set(h(i),'CData',zdata)% Add back edge color removed by interpolating shadingset(h,'EdgeColor','w')alpha(...
一、问题在同时使用Loading和Toast时,wx.showToast()总是闪烁一下消失。二、解决办法封装一个showToast方法,放在app.js中调用代码:/**Toast简化 */ showToast: function(msg) { setTimeout(() => { wx.showToast({ title: ms...
如果自己的脚本里编码没有问题的话,要看一下设置的header