- - PR -
DataGridのデータをMicrosoft Excel2000にエクスポートする
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-08-25 09:42
はじめまして。
今、DataGridのデータをMicrosoft Excel2000にエクスポートする処理を作成しているのですが、どうしても漢字・ひらがなの部分で文字化けが起こってしまいます。 これが作成したソースコードです。 private void Page_Load(object sender, System.EventArgs e) { if (Session[CSession.OUTPUT_TITLE] != null && Session[CSession.OUTPUT_EXCEL] != null) { // Sessionにて、タイトル文字列、DataGridデータを渡す string title = Session[CSession.OUTPUT_TITLE].ToString(); DataGrid DgExcel = (DataGrid)Session[CSession.OUTPUT_EXCEL]; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); DgExcel.RenderControl(htw); Response.ContentType = "application/vnd.ms-excel"; Response.ContentEncoding = Encoding.GetEncoding("Shift-JIS"); // Excelにはきだす Response.Write(title); Response.Write(sw.ToString()); Response.End(); } } 知っている方が見えましたら、ご教授下さい。 |
|
投稿日時: 2004-08-25 12:46
想像ですが...
> Response.ContentEncoding = Encoding.GetEncoding("Shift-JIS"); Content-Encodingヘッダを設定するだけで、Response.Writeには作用しない。 > Response.Write(sw.ToString()); Web.configのrequestEncoding="UTF-8"が効いて、文字列はUTF-8で送信される。 |
|
投稿日時: 2004-08-25 13:21
todoさん ご返答ありがとうございました。
Web.configの設定ですが、 <globalization requestEncoding="shift_jis" responseEncoding="shift_jis" /> このようにしています。 補足:いつも文字化けが起こるとういわけではない。 いつも決まったデータ列が存在する場合のみ文字化けが起こる。 |
|
投稿日時: 2004-08-25 14:26
Content-Encodingヘッダはブラウザに渡されるが、Excelには渡りません。
Excelはcharsetが分からないので自動判定で時々間違えるのでしょう。 metaタグのContent-Typeを渡せばいいでしょう。 |
1