我们如何使用CsvHelper库编写像sep =这样的分隔符?

时间:2015-05-25 11:34:18

标签: c# csvhelper

我们正在使用CsvHelper库从我们的应用程序中导出一些信息,我们的客户通常使用Excel来查看结果

enter image description here (正确打开的数据样本)

一切运行良好,直到我在德语(奥地利)上设置了格式设置的另一台机器上测试了我生成的文件,我发现excel不再能正确解析它,这是可以理解的,因为在此格式中有不同的含义。 enter image description here

在第一行添加 sep =,似乎可以解决问题,但我无法在CsvHelper文档中找到我们如何实现这一目标。所以问题是

我们如何使用CsvHelper库编写像sep =这样的分隔符或任何具有类似效果的分隔符?

3 个答案:

答案 0 :(得分:11)

他们首先将其更改为 CsvConfiguration 的参数,截至 2021 年 3 月 8 日,它是

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

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

答案 1 :(得分:7)

CsvWriter类中,有一个恰当的名称WriteExcelSeparator(),应该这样做。

根据您使用图书馆的方式,您甚至可以:

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

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

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

答案 2 :(得分:0)

由于csvHelper确实支持excel特定方法,因此您可以立即执行此操作。

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