Created on 26.Jun 2013 Modified on 11.Jan 2015 |
汎用CSV読込フォーム CsvReader.NETについて |
はじめに業務PGをしたことのある人間であれば必ずCSVの読込処理をかじったことがあるんじゃないか、と思われるほど 基本的な要件であるにもかかわらず、.NET環境で使える汎用的なCSV読込モジュールを見たことがないという人は多いと思います。 実に不思議で仕方がありませんが、それとも私の探し方が悪かったのでしょうか。 まあ、そんなこんな思案したところ、同じような処理を何度も書くのは時間と資源の無駄でしかないので、 なるたけ汎用的に使えるCSV読込モジュールを製作することにしました。 自分で言うのもなんですが結構出来が良かったのと、研究発表というかデモンストレーションというか、 まあそういう感じのノリで公開することにいたしました。 なお、あくまでも個人作成でしかなく正常系でしかテストしていないので、なにか不具合があるかもしれませんが、 便利だと思ったら使ってやってください。 特長下記のような特長がアリマス。
CSVファイルやTSVファイルになどについて定義ファイルに指定した列名での読込が可能です。
DLLファイルと同じ階層に定義XMLファイルを置く必要がありますが、一度置いてしまえば CSV定義が変わった場合でもXMLを差し替えることで対応可能です。 そのためCSVの列名が変わったとかよくある変更ならば、いちいち実行ファイルをリビルドしなくても定義ファイルを書き換えれば対応できます。
読込対象の列が存在することなどフォーマットチェックが可能です。
列名の他に列の長さなどが指定できます。ただし申し訳ありませんがあまりテストしていません。
2次元リストであるCSVファイルを2次元表に格納するので、実に自然でナチュラルでネイチャー。
つまりCSVデータのチェックや利用についてはデータテーブルを利用することになります。
社内システムによってはちょっとした指定の違いで不必要な列まで含めて出力される場合があります。
そうなるとパースが大変なので、読込に必要な列だけ定義することで、そういった形式の揺れによる不具合を回避できます。 またユーザー自身により定義ファイル上からフラグによる制御も可能です。
定義は列名で行うので[hoge1,hoge2,hoge3]というファイルが[hoge2,hoge3,hoge1]となっても問題ない(と思います)。
たまにある見出し行とデータの開始行が連続していないCSVファイルにも対応できます。
上図のアレな例のCSVについては見出し行1、データ開始行6を指定すれば対応できます。 また利用時に初期化パラメータの見出し行を0行目とすることで、見出しがないCSVファイルを読み込むことが可能です。
見出し行がないファイルでもパラメータの見出し開始行を0にすれば普通に読めます。
ただし列名チェックが出来ないので列名は定義XMLの順番そのままの決め打ちとなります。
デリミタはカンマのみならずタブ文字や空白や任意の文字列を使用することが出来ます。
ただし改行文字など特殊な文字は指定できません。 またデリミタに空文字を指定した場合は列名は定義ファイルの列名を全てカンマで連結したものと見なされます。
未確認機能…一例を挙げると読込キャンセル(2000レコード程度のファイルじゃ完了までが早すぎて押せない)とか、
列ごとに最大文字数の定義(使いどころがなかった)とか、テストどころか動作すらさせていない機能とかあったりします。 |
||
ダウンロードファイルまずはDLLをダウンロードして動作を確認してみてください。CsvReader.NET ダウンロード(要 .NET FrameWork 2.0以降) 無保証ですのでご注意ください。 DLL単体の利用、配布等はご自由にどうぞ。 |
||
利用方法(例:VB.NET)
|
||
ソースファイル(VB.NET)上記DLLに興味を持たれましたら、ソースファイルをダウンロードしてビルドしてみてください。OOPの威力を実感していただけると思います。 VisualStudio2013にてサンプルプロジェクトごとテンプレートファイルにしています。 なおVisualStudio2005などの古いエディションでも、ソースファイル単位でコピペするなど工夫すれば使えると思います。 ソースファイルダウンロード 無保証ですのでご注意ください。 利用、改変等はご自由にどうぞ。ただしソースファイルの転載と再配布については禁止いたします。 しかしながら改変したものを再配布したい場合に限っては、出所を明示していただければ許可とします。 サンプルの使い方サンプルを動かしたい場合はCsvReaderSample.zipのみをインポートしてビルドしてください。サンプル用CSVのDL先(総務省) (真ん中辺の”全国(CSV:~”からダウンロードできます) なおVista以降ではUACの問題により"Program Files"の直下では動作しないと思います。 |