前回の記事とは逆に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ファイルのエンコードを指定します。
各項目はダブルクォートで括ります。
今回も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);
}
}
}
スポンサーサイト
| ホーム |
CSVを読み込みDataTableへ展開する »
| ホーム |