C#で、CSVを簡単に読み込む
CSVを読み込むクラスは
TextFieldParser
TextFieldParser クラス (Microsoft.VisualBasic.FileIO)
なのだが、C#では標準で使えないので、手動でVisual Basicのクラスをプロジェクトに取り込まなければならない。
そのやり方は
下記のようにソリューションエクスプローラから参照設定を右クリックして
参照の追加を開く。
下記のように
で、Microsoft.VisualBasicを選択すれば準備完了。
あとはProgram.csに
using Microsoft.VisualBasic.FileIO;
と記述すればTextFieldParserが使えるようになる。
以下にCSVを読み込むサンプルを示す。
コンソールアプリケーションを作ってから、以下のソースを追加。
ちなみに下記サイトを参考にした。
CSVファイルを読み込むには?[2.0のみ、C#、VB] - @IT
Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; // これの追加を忘れない using Microsoft.VisualBasic.FileIO; namespace testProgram1 { class Program { static void Main(string[] args) { TextFieldParser parser = new TextFieldParser("test.csv", System.Text.Encoding.GetEncoding("Shift_JIS")); parser.TextFieldType = FieldType.Delimited; // 区切り文字はコンマ parser.SetDelimiters(","); while (!parser.EndOfData) { // 1行読み込み string[] row = parser.ReadFields(); foreach (string field in row) { string f = field; // 改行をnで表示 f = f.Replace("\r\n", "n"); // 空白を_で表示 f = f.Replace(" ", "_"); // TAB区切りで出力 Console.Write(f + "\t"); } } } }
読み込むCSVファイルも作っておく。
test.csv
1,やまだ,ウサギ 2,たなか,ネコ 3,さとう,ヒツジ
相対パスの時(サンプルコードままで実行するときとか)は
当たり前だが、実行する前にプロジェクトのEXEファイルと同じディレクトリに
CSVファイルを設定することを忘れないこと。
デフォルトだと、
マイドキュメントのVisual Studio 2010>Projects>プロジェクト名>プロジェクト名>bin>Debug
にEXEファイルがある。
絶対パスの時は
C:\testdir\test.csv
なら
C:¥¥testdir¥¥test.csv
(C:\\testdir\\test.csv)
と¥(\)マークを2回繰り返すのを忘れずに。
上記写真のGUIの再生ボタンから実行すると、あっという間に実行画面が終了し消えるので
キーボードから
Ctrl + F5
を叩いて実行する。
実行できた!