分享

C# CSV文件操作通用类

 天选小丑 2024-09-08 发布于广西

摘要


在C#中,我们可以使用System.IO命名空间提供的类和方法来操作CSV(逗号分隔值)文件。以下是一个通用的CSV文件操作类的示例代码,详细说明了如何实现常见的读取和写入CSV文件的功能。

正文


CSV文件操作通用类

public class CsvFile{ private string filePath; private char delimiter;
public CsvFile(string filePath, char delimiter = ',') { this.filePath = filePath; this.delimiter = delimiter; }
public List<string[]> ReadAll(System.Text.Encoding encoding) { List<string[]> data = new List<string[]>();
try { using (StreamReader reader = new StreamReader(filePath, encoding) { while (!reader.EndOfStream) { string line = reader.ReadLine(); string[] values = line.Split(delimiter); data.Add(values); } } } catch (Exception ex) { Console.WriteLine('Error: ' + ex.Message); }
return data; }
public void WriteAll(List<string[]> data) { try { using (StreamWriter writer = new StreamWriter(filePath)) { foreach (string[] values in data) { string line = string.Join(delimiter.ToString(), values); writer.WriteLine(line); } } } catch (Exception ex) { Console.WriteLine('Error: ' + ex.Message); } }}

上述代码定义了一个CsvFile类,用于读取和写入CSV文件。构造函数接受文件路径和可选的分隔符参数,默认为逗号。ReadAll方法读取整个CSV文件并返回一个包含每行数据的List<string[]>对象。WriteAll方法将给定的数据写入CSV文件。

使用CSV文件操作通用类

static void Main(string[] args){    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);    string filePath = 'D:\\BaiduSyncdisk\\11Test\\测试导入数据.csv';    CsvFile csvFile = new CsvFile(filePath);
// 读取CSV文件,中文时可能需要用到GB2312 List<string[]> data = csvFile.ReadAll(Encoding.GetEncoding('GB2312')); foreach (string[] values in data) { Console.WriteLine(string.Join(', ', values)); }
filePath = 'D:\\BaiduSyncdisk\\11Test\\test.csv'; csvFile = new CsvFile(filePath); // 写入CSV文件 List<string[]> newData = new List<string[]>{ new string[] { 'John', 'Doe', 'john.doe@example.com' }, new string[] { 'Jane', 'Smith', 'jane.smith@example.com' }}; csvFile.WriteAll(newData);}

如是需要用Gb2312在Core下需要先安装以下包

图片

上述代码演示了如何使用CsvFile类来读取和写入CSV文件。首先,我们创建一个CsvFile对象并指定CSV文件的路径。然后,我们使用ReadAll方法读取CSV文件的内容,并通过WriteLine方法打印出每行数据。接下来,我们创建一个新的数据列表newData,并使用WriteAll方法将其写入CSV文件。

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约