在 C# 中使用 CsvHelper 写入文件

问题描述 投票:0回答:5

我尝试在 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文件。
最后几行丢失了。
你能帮忙解决一下吗?

c# csvhelper
5个回答
44
投票

您需要冲洗流。当超出范围时,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
}

10
投票

当循环代码运行良好后我添加了这段代码

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

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


8
投票

假设

writer
是某种 TextWriter,您应该在关闭 writer 之前添加一个调用来刷新内容:

writer.Flush()

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


2
投票

添加@greg的答案:

using (var sr = new StreamWriter(@"C:\out.csv", false, Encoding.UTF8)) {
  using (var csv = new CsvWriter(sr)) {
    csv.WriteRecords(values);
  }
}

0
投票
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
          {
              Delimiter = Delimiter
          };
using (var csvWriter = new CsvWriter(writer, configuration))
{
    csvWriter.WriteRecords(itemsData);
    csvWriter.Flush();
}

//This is an example that might help you 
© www.soinside.com 2019 - 2024. All rights reserved.