|
分類:[C#]
CSVHelperを利用したCSVの読み込みについて質問させてください。
環境:VisualStudio2017
C#
CsvHelperのClassMapを用いて
読み込んだCSVをDataClass型に格納しようとしております。
以下のようなプログラムを書いていますが、お恥ずかしながら
エラーが出ており、解決法がわかっていない状況です。
Public DataClass : IData
{
public int State;
public DateTime SignedDate;
public Double Price;
public Double Quantity;
}
Public MyClass
{
CsvReader csv = new CsvReader();
IData data= new DataClass();
IEnumerable<IData> list = csv.Read(data, this.txtCSV.Text);
foreach (DataClass d in list)
{
// 処理
}
}
public class CsvReader
{
public IEnumerable<IData> Read(IData data, string filename)
{
using (var csv = new CsvHelper.CsvReader(new StreamReader(filename)))
{
csv.Configuration.HasHeaderRecord = false; // Headerはなし
if(data.GetType() == typeof(DataClass))
{
csv.Configuration.RegisterClassMap<MyClassMap>();
}
return csv.GetRecords<IData>();
}
}
}
public MyClassMap()
{
Map(m => m.State).Index(0);
Map(m => m.SignedDate).Index(1).TypeConverter(new DateTimeConverter());
Map(m => m.Price).Index(2).TypeConverter(new DoubleConverter());
Map(m => m.Quantity).Index(3).TypeConverter(new DoubleConverter());
}
[読み込ませたCSV]
0,2017/1/1,1000000,0.5
1,2017/2/1,2000000,0.25
MyClass内foreachでNullReferenceExceptionが発生します。
GetRecords時点で正しくマッピングされていないようですが、原因がつかめていません。
ご教授いただければ幸いです。
|