C#メモ CSV形式のテキストファイルの内容をDataTableに直接格納してみる
これまた野暮用。
CSV形式のテキストファイルの内容をサクッとDataTableに格納できんもんかと調べてたら、案外簡単にできそうなのでメモっとくことに。
定義するnamespaceはこんな感じ。
using System; using System.IO; using System.Data; using System.Data.OleDb;
試しに読み込むCSV形式のテキストファイルの内容はこんな感じ。
テキストファイルの1行目は見出しになる。
今回ファイルの名前はsample.csv、ファイルを置いとく場所はCドライブ直下(C:¥)としとく。
key,value apple,1 orange,3
処理の順番はこんな感じ。
- データベースに接続する(今回はCSVファイルを開くってことになる)
- クエリ文字列を作る
- CSVファイルの内容をDataSetに入れる
んで、コード。
String filename = @"c:\\sample.csv"; // ファイルパス // データベースへ接続する(今回はCSVファイルを開く) OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Path.GetDirectoryName(filename) + "\\; Extended Properties=\"Text;HDR=YES;FMT=Delimited\""); // クエリ文字列を作る // ※ファイルパスを[]でくくること! OleDbCommand command = new OleDbCommand("SELECT * FROM [" + Path.GetFileName(filename) + "]", connection); DataSet dataset = new DataSet(); dataset.Clear(); // 念のためクリア // CSVファイルの内容をDataSetに入れる OleDbDataAdapter adapter = new OleDbDataAdapter(command); adapter.Fill(dataset); // 読み込んだ内容を表示してみる foreach(DataTable table in dataset.Tables) { foreach(DataRow row in table.Rows) { // 最初の行は見出しになるので、文字列で指定して値を取得 Console.WriteLine("{0,10} {1,5}", row["key"], row["value"]); } }
んで、実行してみた結果はこんな感じ。
もち、エラー処理は必要。
メモってことで。
[amazonjs asin="4822298264″ locale="JP" title="C#ショートコードプログラミング 第2版 (MSDNプログラミングシリーズ)"]
ディスカッション
コメント一覧
まだ、コメントがありません