2017-05-09 14 views
0

私が持っている問題は特にCSVHelperライブラリです。CSVHelper FormatException with DateTime

私のcsvファイルは、このようなものになります。私はCSVHelperでやっている何を

Number,Date,Account,Amount,Subcategory,Memo 
,09/05/2017,XXX XXXXXX,-29.00,FT , [Sample string] 
,09/05/2017,XXX XXXXXX,-20.00,FT ,[Sample string] 
,08/05/2017,XXX XXXXXX,-6.30,PAYMENT,[Sample string] 

はこれです:

 List<Transaction> result = new List<Transaction>(); 
     using (TextReader fileReader = File.OpenText("data.csv")) 
     { 
      var csv = new CsvReader(fileReader); 
      result = csv.GetRecords<Transaction>().ToList(); 
     } 

問題は、それが最後の行にのGetRecordを実行しようとしたときということです、この例外が発生します:

Unhandled Exception: System.FormatException: String was not recognized as a valid DateTime. 
    at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) 
    at System.DateTime.Parse(String s, IFormatProvider provider, DateTimeStyles styles) 
    at CsvHelper.TypeConversion.DateTimeConverter.ConvertFromString(TypeConverterOptions options, String text) 
    at lambda_method(Closure) 
    at CsvHelper.CsvReader.CreateRecord[T]() 
    at CsvHelper.CsvReader.<GetRecords>d__65`1.MoveNext() 
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 

データからわかるように、最初の列空であるか、文字列nullを持っています。それでも例外メッセージは、2番目の列であるDateの問題を指しています。

ご協力いただければ幸いです。

+0

どのようにあなたのトランザクションクラスがどのように見えるのでしょうか?デフォルトでは、CsvReaderはCSVファイルで使用していない日付形式を使用することもできます。 – elgonzo

答えて

0

私の推測では、デフォルトのカルチャは、CSVファイルのものとは異なる日付フォーマットを指定していると思います。データと一致するカルチャを設定してみてください。

var csv = new CsvReader(fileReader); 
    csv.Configuration.CultureInfo = CultureInfo.GetCultureInfo("en-GB"); 
    result = csv.GetRecords<Transaction>().ToList(); 

フィドル:https://dotnetfiddle.net/iTvc4Y

+0

はい、それです。ありがとう! – MZokov

関連する問題