24

我尝试在 C# 中使用 CsvHelper 写入 CSV 文件。
这是图书馆的链接http://joshclose.github.io/CsvHelper/

我在网站上使用了代码。

这是我的代码:

var csv = new CsvWriter(writer);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in valuess)
{
    csv.WriteRecord(value);
}

它仅将部分数据写入 csv 文件。
最后一行丢失了。
你能帮忙吗?

4

4 回答 4

42

您需要刷新流。Using 语句将在超出范围时刷新。

using (TextWriter writer = new StreamWriter(@"C:\test.csv", false, System.Text.Encoding.UTF8))
{
    var csv = new CsvWriter(writer);
    csv.WriteRecords(values); // where values implements IEnumerable
}
于 2016-10-15T17:34:25.563 回答
9

什么时候,我在循环代码运行良好后添加了这段代码

var csv = new CsvWriter(writer);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in valuess)
{
     csv.WriteRecord(value);
}
writer.Close();

出现问题是因为我没有关闭连接

于 2014-04-22T09:54:25.637 回答
8

假设这writer是某种 TextWriter,您应该在关闭编写器之前添加一个刷新内容的调用:

writer.Flush()

如果缺少最后几行,这是最可能的原因。

于 2014-04-21T07:24:05.807 回答
2

添加到@greg的答案:

using (var sr = new StreamWriter(@"C:\out.csv", false, Encoding.UTF8)) {
  using (var csv = new CsvWriter(sr)) {
    csv.WriteRecords(values);
  }
}
于 2019-09-14T08:43:04.500 回答