一个完整使用C#编写的CSV读写类

介绍了一款用于C#中高效处理CSV文件的类库,具备简单易用、功能全面、支持多种编码及特殊字符处理的特点。该库提供简便的数据读写、行列增删及数据保存方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源文件下载地址: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");
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值