CsvHelperの簡単な日付変換
CsvHelperの簡単な日付変換で読み込む
CsvHelper 12.2.1
読み込むCSVの日付列が"20190101"のような形式だった時、属性で変換を指定して読み込む方法。
書き込みもたぶん同じ。試してない。
最初はClassMapを書いて読み込みをしていたが、日付を形式変換するためにClassMapを書くのは面倒だなと思って調べてたら、AttributesにFormatがあるなと気づいた話。
CsvHelper.Configuration.Attributes Namespace
100列とかあったとき、数列のためにClassMapを書くのはつかれるのでちょっとは楽になった。
ただ、何かに影響するかは知らない。
最初に書いていたソース
//File,Encoding,HasHeaderRecordはどっかで設定
public IEnumerable<CSV_Format> GetRecords()
{
try
{
using (var reader = new StreamReader(File, Encoding.GetEncoding(EncodingName)))
using (var csv = new CsvReader(reader))
{
csv.Configuration.HasHeaderRecord = HasHeaderRecord;
csv.Configuration.RegisterClassMap<CSV_Format_Mapper>();
return csv.GetRecords<CSV_Format>();
}
}
catch (Exception ex)
{
//..例外処理..
}
}
class CSV_Format_Mapper : ClassMap<CSV_Format>
{
public CSV_Format_Mapper()
{
Map(x => x.col1).Index(1);
Map(x => x.col2).Index(2);
Map(x => x.col4).Index(4).TypeConverterOption.Format("yyyyMMdd");
Map(x => x.col6).Index(6);
}
}
class CSV_Format
{
public string col1 { get; set; }
public int col2 { get; set; }
public DateTime col4 { get; set; }
public decimal col6 { get; set; }
}
Attributesを使ったソース
CSV_Format_Mapper
を書かなくていい!
//File,Encoding,HasHeaderRecordはどっかで設定
public IEnumerable<T> GetRecords()
{
try
{
using (var reader = new StreamReader(File, Encoding.GetEncoding(EncodingName)))
using (var csv = new CsvReader(reader))
{
csv.Configuration.HasHeaderRecord = HasHeaderRecord;
//csv.Configuration.RegisterClassMap<CSV_Format_Mapper>(); //いらなくなった
return csv.GetRecords<T>();
}
}
catch (Exception ex)
{
//..例外処理..
}
}
class CSV_Format
{
[Index(1)]
public string col1 { get; set; }
[Index(2)]
public int col2 { get; set; }
[Index(3), Format("yyyyMMdd")]
public DateTime col4 { get; set; }
[Index(4)]
public decimal col6 { get; set; }
}
参考
Author And Source
この問題について(CsvHelperの簡単な日付変換), 我々は、より多くの情報をここで見つけました https://qiita.com/Sa_Ru/items/9c7d2b2ac53635dfd1cf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .