如何使用CsvHelper库编写分隔符(如sep=,)?

21
我们正在使用CsvHelper库从应用程序中导出一些信息,我们的客户通常使用Excel来查看结果。
样例正确打开数据的截图: 输入图像描述 (样例正确打开数据) 一切都很顺利,直到我在设置为奥地利德语(German(Austria))的另一台机器上测试了生成的文件,然后我发现Excel不能正确解析它,这是可以理解的,因为在这种格式下,的含义不同。
在第一行添加sep=,似乎可以解决问题,但我在CsvHelper文档中找不到如何实现这一点的方法。所以问题是: 我们如何使用CsvHelper库编写类似于sep=,或具有类似效果的内容?
3个回答

29

他们最初将其更改为 CsvConfiguration 的参数,截至2021年3月8日,它是这样的

var config = new CsvConfiguration(CultureInfo.CurrentCulture) { Delimiter = ";", Encoding = Encoding.UTF8 };
using var csv = new CsvReader(reader, config);

可能他们将来会再次更改它 ;)


我在想为什么它突然变成了只读字段。谢谢! - M1sterPl0w

17

CsvWriter 类中,有一个名为 WriteExcelSeparator() 的方法可以完成这个任务。

根据您使用库的方式,您甚至可以:

csv.Configuration.Delimiter = ",";
csv.Configuration.HasExcelSeparator = true;

如果您使用WriteRecords,请使用第二种方法; 如果您使用WriteHeader/WriteRecord,请使用第一种方法。

csv.WriteExcelSeparator();
csv.WriteHeader<Simple>();
csv.WriteRecord( record );

请注意,我写的所有内容都是通过访问CsvHelper https://github.com/JoshClose/CsvHelper的源代码并搜索*sep*轻松找到的。 - xanatos
1
似乎库中已删除了特定于Excel的代码。 - Yusuf Tarık Günaydın
3
我已经更新了一个项目,使用了CsvHelper的第6个版本,但是发现WriteExcelSeparator()方法好像不再存在。我在变更日志http://joshclose.github.io/CsvHelper/change-log中没有看到任何相关信息。那么在第6版中该如何处理它? - less
@less 我不使用那个库...我为了回复你做了一些研究。 - xanatos
2
根据这个GitHub问题,CsvHelper中所有与Excel相关的代码都已被删除(我认为这不是一个好决定,顺便说一句)。 - Cocowalla
显示剩余4条评论

8

由于csvHelper支持Excel特定的方法,因此您现在可以这样做...

csvWriter.WriteField("sep=,", false);
csvWriter.NextRecord();
csvWriter.WriteRecords(dataToExport);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接