MIT’s blog

個人的なメモかな

CsvHelperで楽させて頂く

もう何年前に書いたのか忘れてるツールの機能を追加する為に

A .NET library for reading and writing CSV files. Extremely fast, flexible, and easy to use. | CsvHelperを使ってみる。

プロジェクトへの追加はパッケージマネージャコンソールで

PM> Install-Package CsvHelper

とする。まあ、Visual Studioのメニューからでも出来ますね。

 

で、使うソースに

using CsvHelper;
using CsvHelper.Configuration;

追加して、今回の入力CSVファイルであるダビジェネのテキスト出力はレースヘッダとそのレースの出走馬毎のデータからなる2種類のCSVが混在するのでそれぞれのクラスとそのマップクラス。更に出力するターゲット用外部指数ファイルのクラスとそのマップクラスを定義。

csv.Context.RegisterClassMap<DGRaceTable>();
csv.Context.RegisterClassMap<DGUmaTable>();

って感じで2種類のマップを指定して

csv.Read();

した後にそれぞれ該当する行を

DGRaceRecords.Add(csv.GetRecord<DGRace>());

または

DGUmaRecords.Add(csv.GetRecord<DGUma>());

としてListに追加して、そのListを使ってターゲット用のListを作って書込みです。その昔はベタに読込だファイルから自力でパースしながらコンバートした気がしますが、今回一度CsvHelper使ってある程度使い方を理解したので、CSVファルイ関連は今後楽出来るかなぁと。