DataTableからCSV形式のファイルに保存する

By matsuyama - Last updated: 火曜日, 3月 2, 2010 - Save & Share - Leave a Comment

【DataTableをCSV形式のファイルに保存するサンプルコード】

//CSVで保存するDataTable

DataTable dt = (DataTable) dataGrid1.DataSource;

//保存先のCSVファイルのパス

string csvPath = “C:¥¥”;

//CSVファイルに書き込むときに使うEncoding

System.Text.Encoding enc_jis = System.Text.Encoding.GetEncoding(“Shift_JIS”);

//開く

System.IO.StreamWriter sr = new System.IO.StreamWriter(csvPath, false,enc_jis);

int colCount = dt.Columns.Count; int lastColIndex = colCount – 1;

//ヘッダを書き込む

for (int i =  0; i  < colCount;  i++)

{

//ヘッダの取得

    string field = dt.Columns[i].Caption;

 //"で囲む必要があるか調べる

if (field.IndexOf('"') > -1 ||

field.IndexOf(',') > -1 ||

field.IndexOf('¥r') > -1 ||

field.IndexOf('¥n') > -1 ||

field.StartsWith(" ") || field.StartsWith("¥t") ||

field.EndsWith(" ") || field.EndsWith("¥t"))

{

if (field.IndexOf('"') > -1)

{

//"を""とする

field = field.Replace("¥"", "¥"¥"");

}

field = "¥"" + field + "¥"";

}

//フィールドを書き込む

sr.Write(field);

//カンマを書き込む

if (lastColIndex > i)

{

sr.Write(',');

}

}

//改行する

sr.Write("¥r¥n");

//レコードを書き込む

foreach (DataRow row in dt.Rows)

{

for (int i = 0; i < colCount; i++)

{

//フィールドの取得

string field = row[i].ToString();

//"で囲む必要があるか調べる

if (field.IndexOf('"') > -1 ||

field.IndexOf(',') > -1 ||

field.IndexOf('¥r') > -1 ||

field.IndexOf('¥n') > -1 ||

field.StartsWith(" ") || field.StartsWith("¥t") ||

field.EndsWith(" ") || field.EndsWith("¥t"))

{

if (field.IndexOf('"') > -1)

{

//"を""とする

field = field.Replace("¥"", "¥"¥"");

}

field = "¥"" + field + "¥"";

}

//フィールドを書き込む

sr.Write(field);

//カンマを書き込む

if (lastColIndex > i)

{

sr.Write(',');

}

}

//改行する

sr.Write("¥r¥n");

}

//閉じる

sr.Close();
Posted in CSV保存 • • Top Of Page

Write a comment

Time limit is exhausted. Please reload the CAPTCHA.

*