こんにちは、トミセン(@tomisenblog)です。
C#でCSVファイルの操作に便利なCsvHelperですが、
「CsvHelper って、全然情報無いから使えないよね。」
「CsvHelper って、どう使うの?」
やり方が分からないし、情報も見つからなくて疲れてしまったり、上手くいかなくて思ったより時間がかかってしまっていませんか。
今回はそんなお悩みを解決します。ずばり!
「C# CsvHelper の使い方」についてまとめました。
現場レベルのCsvHelperの実装サンプルを作りました。
CSVデータの取得から、入力チェック、モデル変換まで網羅しています。
5つのシステムで実証したコピペで使い回せる実装法
» 【CsvHelper マスター講座】を見る
使い方
CSVの読み込み
CsvHelperを使ったCSVファイルの読み込みのやり方を一番簡単なところから説明しています。
「まだ、CsvHelperをよく知らない。」という方は、こちらからどうぞ。
Configuration
Configuration一覧
CsvHelperを使いこなすために知っておきたい「Configurationの設定」を一覧にしています。
公式サイトの翻訳ですが、毎回google翻訳するのも面倒だと思うので参考にしてください。
BadDataFound
フィールドに引用符が含まれているなど、不正なデータが含まれている場合に利用する設定です。
ConfigurationのBadDataFoundを使うとCsvHelper.BadDataExceptionをスローする代わりに、実行する独自の関数を設定できます。
DetectColumnCountChanges
フィールドの異なる列数を検知するかどうかに利用する設定です。
設定されていた場合、異なる列数が見つかるとCsvHelper.BadDataExceptionがスローされます。
MissingFieldFound
不足しているフィールドが見つかったときに利用する設定です。
MissingFieldFoundを使うとCsvHelper.MissingFieldExceptionをスローする代わりに、実行する独自の関数を設定できます。
マッピング
CsvClassMapを使わない方法
CsvHelperのマッピングはCsvClassMapを使った方法の情報が多いですが、CsvClassMapを使わない方法の方が簡単です。
CsvClassMap使う方法・使わない方法もGenericsを使って汎用化したコードにしています。
マッピングしない読み込みの方法
CsvHelperはマッピングをする前提で作られていますが、独自の入力チェックをなどを行いたい場合は、マッピングしない読み込みをすることもあります。
読み込んだデータをDictionaryやString[]で取得する方法を解説しています。
DateTime型(日付型)に変換
CSVファイルの日付のデータをDateTime型(日付型)にマッピングする方法です。
難しいことを書く必要はなくて、簡単な設定で変換できます。
特定の値をnullとして扱う
CSVファイルの特定の値をnullとしてマッピングする方法です。
独自のメソッドを書く必要はありません。簡単な設定で変換できます。
まとめ
CsvHelperって、すごく便利なので好きなツールだったりします。
「情報少ないな。もったいないな。」と思っていたので、まとめてみました。何かの役にたつと嬉しいです。
それでは、また。
こちらの記事も読まれています!