我尝试在 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文件。
最后几行丢失了。
你能帮忙解决一下吗?
您需要冲洗流。当超出范围时,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
}
当循环代码运行良好后我添加了这段代码
var csv = new CsvWriter(writer);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in valuess)
{
csv.WriteRecord(value);
}
writer.Close();
出现问题是因为我没有关闭连接
假设
writer
是某种 TextWriter,您应该在关闭 writer 之前添加一个调用来刷新内容:
writer.Flush()
如果最后几行缺失,这是最可能的原因。
添加@greg的答案:
using (var sr = new StreamWriter(@"C:\out.csv", false, Encoding.UTF8)) {
using (var csv = new CsvWriter(sr)) {
csv.WriteRecords(values);
}
}
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