强制CsvHelper在生成CSV文件时使用句点-十进制分隔符



我有一个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/2017 11:45:32153">

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

按照"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();
}
}
}

它现在工作得很好——用句点代替逗号作为小数分隔符。谢谢Louis Go!

最新更新