16

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

在此处输入图像描述 (正确打开的数据样本)

一切都运行良好,直到我在另一台机器上测试了我生成的文件,并在德语(奥地利)上设置了格式,我发现 excel 将不再正确解析它,这是可以理解的,因为,在这种格式中具有不同的含义。 在此处输入图像描述

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

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

4

3 回答 3

21

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

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

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

于 2021-03-08T15:42:55.470 回答
16

CsvWriter班级里面有一个恰当的名字WriteExcelSeparator()应该这样做。

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

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

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

csv.WriteExcelSeparator();
csv.WriteHeader<Simple>();
csv.WriteRecord( record );
于 2015-05-25T11:39:20.510 回答
5

由于 csvHelper 确实支持 excel 特定的方法,你现在可以这样做..

csvWriter.WriteField("sep=,", false);
csvWriter.NextRecord();
csvWriter.WriteRecords(dataToExport);
于 2019-05-22T13:17:21.613 回答