源文件下载地址:https://gitee.com/hwaust/WindGoes6/blob/master/Windgoes6/Data/CSV.cs
简介
网上有很多CSV的读写类,这些类要么设计不合理,要么功能简单,要么内容不完整。为了方便在C#在对CSV中的操作,笔者进行了重新编写。此CSV类具有以下特点:
- 使用简单
只需要几行代码即可定义、访问和进行相应的读写操作。 - 功能完善
包括CSV操作的主要功能。 - 支持不同编码
可以自定义,并支持所有常见编码格式。 - 支持特殊字符
如引号("
),逗号(,
), 换行符号(\r\n
)。 - 只有一个源文件
源代码只有1个,方便管理。
使用方法
/***************** 从文件初始化一个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");