一尘不染

在C#中将数据写入CSV文件

c#

我正在尝试csv使用C#语言逐行写入文件。这是我的功能

string first = reader[0].ToString();
string second=image.ToString();
string csv = string.Format("{0},{1}\n", first, second);
File.WriteAllText(filePath, csv);

整个函数在一个循环内运行,并且每一行都应写入csv文件。在我的情况下,下一行将覆盖现有行,最后,我在csv文件中仅获得了最后一条记录。如何写csv文件中的所有行?


阅读 1141

收藏
2020-05-19

共1个答案

一尘不染

更新

在我幼稚的日子里,我建议手动执行此操作(这是对一个简单问题的简单解决方案),但是由于这种方法越来越流行,所以我建议使用CsvHelper库来执行所有安全检查,等等。

CSV比问题/答案所建议的复杂得多。

原始答案

由于已经存在一个循环,请考虑这样进行:

//before your loop
    var csv = new StringBuilder();

//in your loop
    var first = reader[0].ToString();
    var second = image.ToString();
    //Suggestion made by KyleMit
    var newLine = string.Format("{0},{1}", first, second);
    csv.AppendLine(newLine);

//after your loop
    File.WriteAllText(filePath, csv.ToString());

或达到这种效果的东西。我的理由是:您无需为每个项目都写入文件,只需打开一次流,然后写入即可。

您可以更换

File.WriteAllText(filePath, csv.ToString());

File.AppendAllText(filePath, csv.ToString());

如果要将旧版本的csv保留在同一文件中

C#6

如果您使用的是c#6.0,则可以执行以下操作

var newLine = $"{first},{second}"

编辑

这里是一个链接到一个问题,说明了什么Environment.NewLine

2020-05-19