簡體   English   中英

CSVHelper-在導出到CSV時出現日期和十進制值(分隔符用作逗號而不是點)的問題

[英]CSVHelper - Issue with Date and decimal value(seperator used as Comma instead of Dot) on export to CSV

我需要將輸入文件xml轉換為CSV,為此我使用了CSV Helper。

將xml轉換為對象然后轉換為csv后,CSV文件中有兩列未按預期返回結果。

  1. 日期欄
  2. 金額欄

CSVWriter中對象的日期列值-csv中的“ 2019-01-25”值是01/25/2019

CSVWRITER中對象中的數量列-CSV中的0.95值為0.95

            using (var streamWriter = new StreamWriter(filename))

            using (var csvWriter = new CsvWriter(streamWriter))
            {
                streamWriter.WriteLine("sep=;");
                csvWriter.Configuration.HasHeaderRecord = true;

                csvWriter.Configuration.AutoMap<class>();
                csvWriter.WriteHeader<Camt054>();
                csvWriter.NextRecord();
                csvWriter.WriteRecords(new[] {singleclassobject});


                streamWriter.Flush();
            }

CSV格式的期望值-2019-01-25金額-9.98

CSV日期的實際值-2019年1月25日金額-9,98

寫對象時嘗試設置文化

csvWriter.Configuration.CultureInfo = CultureInfo.GetCultureInfo("en-US");

您可以設置配置的CultureInfo值以指定特定格式。 美國文化和不變文化都使用點作為小數點分隔符。 但是,沒有文化使用ISO8601日期格式。

您可以使用以下方式設置CultureInfo:

csvWriter.Configuration.CultureInfo = CultureInfo.InvariantCulture;

您可以通過兩種方式指定日期格式:

  • 您可以為每個DateTime值指定格式,或者
  • 僅指定特定列的格式

對於具有以下內容的整個文件:

var configuration=csvWriter.Configuration;
configuration.TypeConverterOptionsCache.GetOptions<DateTime>().Formats = new []{"yyyy-MM-dd"};

或針對映射類中的特定列:

var memberMap = Map(m => m.Date);
memberMap.TypeConverterOption.Format("yyyy-MM-dd");

實際語法可能因一個版本而異,因為CsvHelper的API經常更改。 例如,使用了較舊的SO問題:

Map(m => m.Date).TypeConverterOption("yyy-MM-dd");

設置日期格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM