Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9743

CsvHelperの簡単な日付変換

$
0
0

CsvHelperの簡単な日付変換で読み込む

CsvHelper 12.2.1

読み込むCSVの日付列が"20190101"のような形式だった時、属性で変換を指定して読み込む方法。
書き込みもたぶん同じ。試してない。

最初はClassMapを書いて読み込みをしていたが、日付を形式変換するためにClassMapを書くのは面倒だなと思って調べてたら、AttributesにFormatがあるなと気づいた話。

CsvHelper.Configuration.Attributes Namespace

100列とかあったとき、数列のためにClassMapを書くのはつかれるのでちょっとは楽になった。
ただ、何かに影響するかは知らない。

最初に書いていたソース

//File,Encoding,HasHeaderRecordはどっかで設定publicIEnumerable<CSV_Format>GetRecords(){try{using(varreader=newStreamReader(File,Encoding.GetEncoding(EncodingName)))using(varcsv=newCsvReader(reader)){csv.Configuration.HasHeaderRecord=HasHeaderRecord;csv.Configuration.RegisterClassMap<CSV_Format_Mapper>();returncsv.GetRecords<CSV_Format>();}}catch(Exceptionex){//..例外処理..}}
classCSV_Format_Mapper:ClassMap<CSV_Format>{publicCSV_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);}}classCSV_Format{publicstringcol1{get;set;}publicintcol2{get;set;}publicDateTimecol4{get;set;}publicdecimalcol6{get;set;}}

Attributesを使ったソース

CSV_Format_Mapperを書かなくていい!

//File,Encoding,HasHeaderRecordはどっかで設定publicIEnumerable<T>GetRecords(){try{using(varreader=newStreamReader(File,Encoding.GetEncoding(EncodingName)))using(varcsv=newCsvReader(reader)){csv.Configuration.HasHeaderRecord=HasHeaderRecord;//csv.Configuration.RegisterClassMap<CSV_Format_Mapper>(); //いらなくなったreturncsv.GetRecords<T>();}}catch(Exceptionex){//..例外処理..}}
classCSV_Format{[Index(1)]publicstringcol1{get;set;}[Index(2)]publicintcol2{get;set;}[Index(3),Format("yyyyMMdd")]publicDateTimecol4{get;set;}[Index(4)]publicdecimalcol6{get;set;}}

参考

Attributes
CsvHelper.Configuration.Attributes Namespace


Viewing all articles
Browse latest Browse all 9743

Trending Articles