c# 对CSV文件操作「写入、读取、修改」

1. 介绍

CSV(逗号分隔值)文件是一种常见的文本文件格式,用于存储表格数据。在C#中,我们可以使用各种方法对CSV文件进行操作,包括写入、读取和修改。

2. 写入CSV文件

要写入CSV文件,我们首先需要创建一个StreamWriter对象,将文件路径作为参数传递给它的构造函数。然后,我们可以使用WriteLine方法将数据写入文件。下面是一个示例:

string filePath = "data.csv";

using(StreamWriter writer = new StreamWriter(filePath))

{

writer.WriteLine("Name, Age, City");

writer.WriteLine("John, 25, New York");

writer.WriteLine("Lisa, 30, Los Angeles");

writer.WriteLine("David, 35, Chicago");

}

在上面的例子中,我们创建了一个名为"data.csv"的文件,并将数据写入其中。通过使用逗号分隔不同的数据项,我们可以保持CSV文件的数据结构。

3. 读取CSV文件

要读取CSV文件,我们可以使用StreamReader类。我们可以使用ReadLine方法逐行读取文件,并使用Split方法将每行分割为不同的字段。下面是一个例子:

string filePath = "data.csv";

using(StreamReader reader = new StreamReader(filePath))

{

string header = reader.ReadLine(); // 读取文件的第一行作为表头

Console.WriteLine(header); // 输出表头

string line;

while((line = reader.ReadLine()) != null)

{

string[] fields = line.Split(',');

string name = fields[0];

string age = fields[1];

string city = fields[2];

Console.WriteLine($"Name: {name}, Age: {age}, City: {city}");

}

}

在上面的例子中,我们首先读取文件的第一行作为表头,并将其输出。然后,我们逐行读取文件的其余部分,并将每行分割为不同的字段。然后,我们将每个字段的值提取出来,并将其输出。

4. 修改CSV文件

要修改CSV文件的内容,我们可以先将其读入内存,然后对内存中的数据进行操作,最后将修改后的数据写入回CSV文件。下面是一个例子:

string filePath = "data.csv";

// 读取文件内容并保存到内存中

List<string> lines = new List<string>();

using(StreamReader reader = new StreamReader(filePath))

{

string line;

while((line = reader.ReadLine()) != null)

{

lines.Add(line);

}

}

// 修改内存中的数据

lines[1] = "John, 26, New York"; // 修改第二行的数据

// 将修改后的数据写入回CSV文件

using(StreamWriter writer = new StreamWriter(filePath))

{

foreach(string line in lines)

{

writer.WriteLine(line);

}

}

在上面的例子中,我们首先将文件的所有内容读取到一个List中。然后,我们修改了List中的第二个元素(即第二行的数据)。最后,我们将修改后的数据逐行写入回CSV文件。

5. 改进:使用CsvHelper库

虽然以上的方法可以完成CSV文件的操作,但是使用CsvHelper库能够更方便地处理CSV文件。CsvHelper是一个强大的开源库,提供了一系列用于读取和写入CSV文件的方法和工具。

要使用CsvHelper库,我们首先需要在项目中安装CsvHelper NuGet包。然后,我们可以使用CsvReader和CsvWriter类来读取和写入CSV文件。下面是一个使用CsvHelper库的例子:

using CsvHelper;

using System.Globalization;

string filePath = "data.csv";

// 使用CsvReader读取CSV文件

using(StreamReader reader = new StreamReader(filePath))

using(CsvReader csvReader = new CsvReader(reader, CultureInfo.InvariantCulture))

{

csvReader.Read(); // 读取表头

while(csvReader.Read())

{

string name = csvReader.GetField(0);

int age = csvReader.GetField<int>(1);

string city = csvReader.GetField(2);

Console.WriteLine($"Name: {name}, Age: {age}, City: {city}");

}

}

// 使用CsvWriter写入CSV文件

using(StreamWriter writer = new StreamWriter(filePath))

using(CsvWriter csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture))

{

csvWriter.WriteField("Name");

csvWriter.WriteField("Age");

csvWriter.WriteField("City");

csvWriter.NextRecord();

csvWriter.WriteField("John");

csvWriter.WriteField(25);

csvWriter.WriteField("New York");

csvWriter.NextRecord();

csvWriter.WriteField("Lisa");

csvWriter.WriteField(30);

csvWriter.WriteField("Los Angeles");

csvWriter.NextRecord();

csvWriter.WriteField("David");

csvWriter.WriteField(35);

csvWriter.WriteField("Chicago");

csvWriter.NextRecord();

}

使用CsvHelper库,我们可以更方便地读取和写入CSV文件,并且能够更好地处理数据类型的转换。

6. 总结

在C#中,我们可以使用各种方法对CSV文件进行操作,包括写入、读取和修改。我们可以使用StreamWriter和StreamReader类来手动操作文件,也可以使用CsvHelper库来更方便地处理CSV文件。

无论是手动操作还是使用CsvHelper库,对于数据分隔的文件格式如CSV,正确地读取和写入数据是非常重要的。熟练掌握CSV文件的操作技巧将有助于我们更好地处理和分析大量的数据。

后端开发标签