fc2ブログ
プログラムのことなんてちょろちょろ書いてます。まったり更新でよろしく(;´Д`A ```
むにむにするHP
DataTableの内容をCSVへ書き込む
2013-03-11-Mon  CATEGORY: C#
前回の記事とは逆にDataTableの内容をCSVへ出力します。

今回もDataTableの拡張メソッドとして書式を以下のようにします。

public static void ToCsv(this DataTable dt, string filePath, bool hasHeader, Encoding encoding)

第1引数はCSVへ出力するDataTableで、拡張メソッドとするために this をつけます。
第2引数はCSVファイルのパスです。
第3引数はCSVファイルの1行目をヘッダと見なすか判断するためのフラグで、trueなら1行目をヘッダと見なしてDataTableの列名を出力します。
第4引数はCSVファイルのエンコードを指定します。

各項目はダブルクォートで括ります。


public static void ToCsv(this DataTable dt, string filePath, bool hasHeader, Encoding encoding)
{
using ( TextWriter writer = new StreamWriter(filePath, false, encoding))
{
// ヘッダが必要ならDataTableの列名を1行目に出力する
if (hasHeader)
{
string header = string.Empty;

// 列名を取得してカンマ区切りにする(最後のカンマを削除)
foreach (DataColumn column in dt.Columns)
{
header = string.Format("\"{0}\",", column.ColumnName);
}
header = header.Remove(header.Length - 1);

writer.WriteLine(header);
}

// データを展開
foreach (DataRow row in dt.Rows)
{
string line = string.Empty;

// 各行データを取得してカンマ区切りにする(最後のカンマを削除)
foreach (object column in row.ItemArray)
{
line = string.Format("\"{0}\",", column);
}
line = line.Remove(line.Length - 1);

writer.WriteLine(line);
}
}
}

スポンサーサイト



ページトップへ  トラックバック0 コメント0
コメント

管理者にだけ表示を許可する
 
トラックバック
TB*URL
<< 2023/09 >>
S M T W T F S
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


余白 Copyright © 2005 むにむにするHP. all rights reserved.