【问题标题】:How we can write delimiter like sep=, using CsvHelper library?我们如何使用 CsvHelper 库编写像 sep= 这样的分隔符?
【发布时间】:2015-05-25 11:34:18
【问题描述】:

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

(正确打开的数据示例)

一切正常,直到我在另一台机器上测试生成的文件,格式设置为 German(Austria),我发现 excel 无法再正确解析它,这是可以理解的,因为 , 在这种格式中有不同的含义。

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

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

【问题讨论】:

    标签: c# csvhelper


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想知道为什么它突然变成了一个只读字段。谢谢!
    【解决方案2】:

    CsvWriter 类中有一个恰当命名的 WriteExcelSeparator() 应该可以做到这一点。

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

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

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

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

    【讨论】:

    • @user3473830 请注意,我编写的所有内容都是通过转到 CsvHelper github.com/JoshClose/CsvHelper 的源代码并搜索 sep 轻松找到的
    • 我真的很尴尬,我们公司使用的csvhelper 2.5版没有这个功能(我现在检查了),我错误地只检查了我们本地的克隆存储库,并没有考虑到这个可能会在较新的版本中添加该功能,再次感谢您的帮助。
    • 似乎 Excel 特定代码已从库中删除。
    • @xanatos 我更新了一个项目以使用 CsvHelper 版本 6,并且 WriteExcelSeparator() 方法似乎不再存在。我在更新日志joshclose.github.io/CsvHelper/change-log 中看不到任何内容。在第 6 版中如何处理它?
    • 根据this GitHub issue,所有 Excel 特定的代码都已从 CsvHelper 中删除(顺便说一句,我认为这不是一个好的决定)
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      相关资源
      最近更新 更多