![](/img/trans.png)
[英]windows phone default decimal seperator dot (.) instead of comma (,)
[英]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文件中有兩列未按預期返回結果。
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;
您可以通過兩種方式指定日期格式:
對於具有以下內容的整個文件:
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.