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

use*_*830 9 c# csvhelper

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

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

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

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

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

Cod*_*ife 16

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

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

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


xan*_*tos 9

CsvWriter课堂上有一个恰当的名字WriteExcelSeparator(),应该这样做.

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

csv.Configuration.Delimiter = ",";
csv.Configuration.HasExcelSeparator = true;
Run Code Online (Sandbox Code Playgroud)

如果你使用WriteRecords,使用第二种方式,而如果你使用 WriteHeader/ WriteRecord使用第一种方式.

csv.WriteExcelSeparator();
csv.WriteHeader<Simple>();
csv.WriteRecord( record );
Run Code Online (Sandbox Code Playgroud)

  • @xanatos我更新了一个项目以使用CsvHelper版本6,而WriteExcelSeparator()方法似乎不再存在.我在更改日志http://joshclose.github.io/CsvHelper/change-log中看不到任何内容.如何在版本6中处理它? (2认同)
  • 根据[此 GitHub 问题](https://github.com/JoshClose/CsvHelper/issues/847),所有特定于 Excel 的代码已从 CsvHelper 中删除(顺便说一句,我认为这不是一个好的决定) (2认同)

Tij*_*ohn 5

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

csvWriter.WriteField("sep=,", false);
csvWriter.NextRecord();
csvWriter.WriteRecords(dataToExport);
Run Code Online (Sandbox Code Playgroud)