📜  c# csv 读写 - C# (1)

📅  最后修改于: 2023-12-03 14:39:42.661000             🧑  作者: Mango

C# CSV读写

在C#中,CSV(逗号分隔值)是一种常见的文件格式,经常被用于存储和传输数据。CSV文件是一个纯文本文件,行和列都用逗号分隔,每一行表示一个记录,每一列表示一条数据。

在本文中,我们将介绍如何使用C#读取和写入CSV文件。

CSV文件结构

CSV文件通常由多行和多个逗号分隔的字段组成。第一行通常是标题行,说明每一列的含义。下面是一个例子:

Name,Age,Gender
John,25,Male
Jane,30,Female
CSV读取

我们可以使用C#内置的StreamReaderCsvHelper库来读取CSV文件。StreamReader用于打开CSV文件,CsvHelper用于解析CSV文件。

以下是读取CSV文件的示例代码:

using System.IO;
using CsvHelper;

public List<MyModel> ReadCsvFile(string filePath)
{
    var records = new List<MyModel>();
    using (var reader = new StreamReader(filePath))
    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
        csv.Configuration.HeaderValidated = null;
        csv.Configuration.MissingFieldFound = null;
        records = csv.GetRecords<MyModel>().ToList();
    }
    return records;
}
解析CSV文件

CsvHelper库提供了一个CsvReader类,它可以轻松地解析CSV文件。该类使用以下代码将CSV文件解析为具有列标题和行数据的嵌套列表:

using (var reader = new StreamReader(filePath))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    csv.Configuration.HeaderValidated = null;
    csv.Configuration.MissingFieldFound = null;
    records = csv.GetRecords<MyModel>().ToList();
}

在上面的示例中,我们首先打开CSV文件,然后创建一个CsvReader实例。我们在CsvReader的构造函数中指定InvariantCulture,以确保不同区域设置下的字段解析正确。

我们还需要禁用csv.Configuration.HeaderValidatedcsv.Configuration.MissingFieldFound,以避免在CSV文件中找到不匹配的列标题或缺少列的情况下抛出异常。

最后,我们使用csv.GetRecords<MyModel>().ToList()将CSV文件读入List<MyModel>中。在这里,MyModel是一个自定义类,对应CSV文件中的每一行数据。

CSV写入

同样,C#也提供了内置StreamWriter类和CsvHelper库,可以用于将数据写入CSV文件。

以下是将数据写入CSV文件的示例代码:

using System.IO;
using CsvHelper;

public void WriteCsvFile(string filePath, List<MyModel> records)
{
    using (var writer = new StreamWriter(filePath))
    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
    {
        csv.WriteRecords(records);
    }
}

在上面的示例中,我们首先创建一个StreamWriter实例,然后创建一个CsvWriter实例。我们在CsvWriter的构造函数中指定InvariantCulture,以确保不同区域设置下的字段解析正确。

最后,我们使用csv.WriteRecords(records)List<MyModel>写入CSV文件。

总结

在本文中,我们介绍了如何使用C#读取和写入CSV文件。我们使用StreamReaderCsvHelper库读取CSV文件,使用StreamWriterCsvHelper库写入CSV文件。使用这些技术,您可以轻松地处理CSV文件并从中提取数据。

参考:https://jasonwatmore.com/post/2021/06/07/c-read-write-csv-files-with-csvhelper