小编典典

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

all

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文件中的所有行?


阅读 86

收藏
2022-05-26

共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

2022-05-26