Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在生成CSV文件时强制CsvHelper使用句点小数分隔符_C#_.net_Csvhelper - Fatal编程技术网

C# 在生成CSV文件时强制CsvHelper使用句点小数分隔符

C# 在生成CSV文件时强制CsvHelper使用句点小数分隔符,c#,.net,csvhelper,C#,.net,Csvhelper,我有一个C#/.NET4.8WPF应用程序。我正在使用CsvHelper为各种列表生成CSV文件。我有以下代码: public void WriteRecord(List<T> data, string filename) { using (TextWriter writer = new StreamWriter(filename)) { using (CsvWriter csv = new CsvWriter(writer, CultureInfo.

我有一个C#/.NET4.8WPF应用程序。我正在使用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();
        }
   }
}
public void WriteRecord(列表数据、字符串文件名)
{
使用(TextWriter=新StreamWriter(文件名))
{
使用(CsvWriter csv=新CsvWriter(编写器,CultureInfo.InvariantCulture))
{
csv.写入记录(数据);
writer.Flush();
}
}
}
我使用T泛型,因为这样我可以将任何类型的列表保存到CSV文件中。除了一个问题,它工作得很好。如果列表类型具有DateTime字段,且值包括毫秒,则它在秒和毫秒之间使用逗号-十进制分隔符。这是一个问题,因为我使用逗号作为字段分隔符。因此,换句话说,如果要保存的对象有一个日期时间字段,如“2020/02/17 11:45:32.153”,则将其保存为“2020/02/17 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();
        }
   }
}
public void WriteRecord(列表数据、字符串文件名)
{
使用(TextWriter=新StreamWriter(文件名))
{
使用(CsvWriter csv=新CsvWriter(编写器,CultureInfo.InvariantCulture))
{
csv.Configuration.TypeConverterOptionsCache.GetOptions().Formats=new[]{“yyyy/MM/dd HH:MM:ss.fff”};
csv.写入记录(数据);
writer.Flush();
}
}
}

它现在工作得很好-使用句点作为十进制分隔符,而不是逗号。谢谢路易斯,走吧

这回答了你的问题吗?定义你自己的格式。是的。非常感谢。我将在下面发布我所做的: