asp.netエクセル書き出し(CSV)

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();

タグ:

CSharp
最終更新:2011年08月11日 17:44
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。