ASP.NETで、CSVファイルを直接出力し表示させるとUTF-8でエンコードされ文字化けしてしまうのでいったんファイルにShift_JISでエンコードして保存し、ダウンロードすることによって文字化けせずにエクセルで表示することができる。
DataSet ds = new DataSet();
//ds = [データを代入];
// CSV文字列代入用変数
StringBuilder sb = new StringBuilder();
// datasetからカンマ区切りの文字列に変換
foreach (DataRow row in ds.Tables[0].Rows) {
for (int i = 0; i < ds.Tables[0].Columns.Count; i++) {
if (i >= 1) {
sb.Append(",");
}
sb.Append(row[i].ToString());
}
// 改行
sb.Append("\r\n");
}
// ファイル名指定
string strFile = [ファイル名];
// CSVファイルに書き込むときに使うEncoding
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_JIS");
// CSVファイルを保存するために書き込みモードでファイルを開く
System.IO.StreamWriter sr = new System.IO.StreamWriter(strFile, false, enc);
// フィールドを書き込む
sr.Write(sb.ToString());
// 閉じる
sr.Close();
// ダウンロードする
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strFile);
// ダウンロードデータとして設定
Response.ContentType = "application/octet-stream";
byte[] data = File.ReadAllBytes(strFile);
Response.BinaryWrite(data);
Response.End();
最終更新:2011年08月11日 17:44