【问题标题】:Forcing CsvHelper to use a period decimal separator when generating CSV file在生成 CSV 文件时强制 CsvHelper 使用句点小数分隔符
【发布时间】:2020-02-17 09:48:17
【问题描述】:

我有一个 C#/.Net 4.8 WPF 应用程序。我正在使用 CsvHelper 为各种列表生成 CSV 文件。我有以下代码:

public void WriteRecord(List<T> data, string filename)
{
    using (TextWriter writer = new StreamWriter(filename))
    {
        using (CsvWriter csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
        {
            csv.WriteRecords(data);
            writer.Flush();
        }
   }
}

我使用的是 T 泛型,因为这样我可以将任何类型的列表保存到 CSV 文件中。它工作正常,除了一个问题。如果列表类型具有 DateTime 字段,并且值包括毫秒,则它在秒和毫秒之间使用逗号小数分隔符。这是一个问题,因为我使用逗号作为字段分隔符。换句话说,如果要保存的对象有一个 DateTime 字段,例如 "2020/02/17 11:45:32.153",它会将其保存为 "2020/02/17 11 :45:32,153"

有没有办法强制它使用句点小数分隔符而不是逗号?

【问题讨论】:

标签: c# .net csvhelper


【解决方案1】:

按照“Louis Go”在他上面的评论中发布的链接,这就是我所做的:

public void WriteRecord(List<T> data, string filename)
{
    using (TextWriter writer = new StreamWriter(filename))
    {
        using (CsvWriter csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
        {
            csv.Configuration.TypeConverterOptionsCache.GetOptions<DateTime>().Formats = new[] { "yyyy/MM/dd HH:mm:ss.fff" };
            csv.WriteRecords(data);
            writer.Flush();
        }
   }
}

现在可以完美运行 - 使用句点作为小数分隔符,而不是逗号。谢谢路易斯去!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多