【问题标题】:How to not write duplicate values to csv file [duplicate]如何不将重复值写入 csv 文件 [重复]
【发布时间】:2018-08-09 18:23:37
【问题描述】:

我正在尝试找到一种将数据写入 csv 文件的更好方法。现在每个循环迭代都会将标题和数据附加到如下文件中

我想修改我的逻辑,以便只获得类似的数据。

非常感谢任何关于我可以更改的提示。谢谢

......
var csvContent = new StringBuilder();
csvContent.AppendLine("ONE, TWO, THREE);
var csvPath = defaultFilePath + "file7.csv";
foreach (var i in values)
{
    fileData.DataOne = i["DataPointOne"].ToString();
    fileData.DataTwo = i["DataPointTwo"].ToString();
    fileData.DataThree = DateTime.Parse(i["DataPointThree"]);
    csvContent.AppendLine(fileData.DataOne + "," + fileData.DataTwo + "," + fileData.DataThree);
    File.AppendAllText(csvPath, csvContent.ToString());
}
......

【问题讨论】:

  • File.AppendAllText()移到循环外
  • @MathiasR.Jessen,我试过了。该文件没有被写入。
  • 根据标题,这是 stackoverflow.com/questions/2537823/… 的副本,但实际上只是标准的“如何在 C# 中将 CSV 写入文件”,例如 stackoverflow.com/questions/18757097/…,它显示了您尝试执行的完全相同的代码,只是将构建字符串的写入结果正确放置到文件中。 (可能您并没有为实际代码执行此操作,而是使用库来读取/写入 CSV,但可以出于娱乐/教育目的提出问题)

标签: c#


【解决方案1】:

您不断地向csvContent 添加行,然后在每次迭代时将其全部写入文件。摆脱StringBuilder(这里不需要)并像这样使用StreamWriter

using(var streamWriter = new StreamWriter("path\\toFile.csv")) 
{
    streamWriter.WriteLine("ONE, TWO, THREE");
    foreach (var i in values)
    {
        fileData.DataOne = i["DataPointOne"].ToString();
        fileData.DataTwo = i["DataPointTwo"].ToString();
        fileData.DataThree = DateTime.Parse(i["DataPointThree"]);
        streamWriter.WriteLine(fileData.DataOne + "," + fileData.DataTwo + "," + fileData.DataThree);
    }
}

【讨论】:

  • 非常感谢您的帮助。我将阅读 streamwriter 和 stringbuilder。
【解决方案2】:

问题是有相同的StringBuilder 内容多次存储到文件中。

迭代 1 csvContent 包含第 1 行的数据 --> 第 1 行存储到文件中。 文件包含第 1 行

迭代 2 csvContent 附加第 2 行 --> 第 1 行,第 2 行附加存储到文件中。 文件包含第 1、1、2 行

迭代 3 csvContent 附加第 3 行 --> 第 1、2、3 行再次附加到文件中。 文件包含第 1、1、2、1、2、3 行

简单的修复应该是将文件存储在循环之外或使用例如StreamWriter 在另一个答案中建议。

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 2017-02-04
    • 1970-01-01
    • 2019-01-18
    • 2020-02-23
    • 2012-06-07
    • 2016-07-25
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多