- PR -

Excelへデータ書き出した際に文字化け

投稿者投稿内容
ちゃーりー
会議室デビュー日: 2005/02/03
投稿数: 7
投稿日時: 2005-02-03 16:43
ASPにて
response.buffer = true
response.ContentType = "application/vnd.ms-excel"
response.AddHeader "content-disposition", "attachment; filename=test.xls"
を使用して、データをExcelへ書き込む処理を作成したのですが、
ごくごくまれにExcel内の文字が数字を除いて全て
アラビア文字のような変な文字に文字化けするような現象が起こります。
(普段は全く問題なくデータを書き出します)

tableタグを使ってExcelに書き出しており、
同じデータ内容はWeb上でも見れるようになっていますが、
Web上で見た場合は文字化けなど起こしておらず、
Excelへ書き出した際にのみに起こります(ごくごくまれに)

現在手元にデータがないのですが、UTF-8やSHIFT-JISの違いとか
なんかそういった感じではないような気がします。

もし似たような現象を経験された方や
対処法をご存知な方いらっしゃいましたら
対策など教えていただけないでしょうか?
おふぃすこま
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 2005-02-03 16:57
こんにちは。おふぃすこまです。
引用:

現在手元にデータがないのですが、UTF-8やSHIFT-JISの違いとか
なんかそういった感じではないような気がします。


そう思われる根拠が分からないのですが・・・
とりあえず
Response.Charset = "Shift_JIS"
を付け加えてみては如何でしょう?
ちゃーりー
会議室デビュー日: 2005/02/03
投稿数: 7
投稿日時: 2005-02-03 17:19
>おふぃすこま
ご回答ありがとうございます。

>とりあえずResponse.Charset = "Shift_JIS"
すいません、書き忘れてましたがこれつけてもダメだったんです。
なので、UTF-8やSHIFT-JISではなさそうな気がすると書いたのですが言葉たらずでした。
おさがわせして申し訳ありません。

データは住所とか氏名、電話番号とかいったもので
それを表に書き出しています。
鰍ニかの特殊なマークが原因かとも思いましたが、
そういったデータも普通にエクセルに書き出されているのでそうでもない感じです。

なんか文字化けを引き起こしている行があるらしく、その行以外を
Excelへ書き出すと文字化けがおこらず、その行のみ書き出すと文字化けします。
なのですが、文字化けを起こす行を見ても特に変なデータが入っているわけでもなく、
またまったく同じデータ内容の行を新たに作成して
それをExcelへ書き出すと、文字化けが起こらず普通にかけてしまいます。
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2005-02-03 17:35
引用:

ちゃーりーさんの書き込み (2005-02-03 16:43) より:
ASPにて
response.buffer = true
response.ContentType = "application/vnd.ms-excel"
response.AddHeader "content-disposition", "attachment; filename=test.xls"
を使用して、データをExcelへ書き込む処理を作成したのですが、



ExcelやWordを直接たたくようなAPI、何かありませんでしたっけ?(記憶があやふや)

どうしてもResponseで出そうというのなら、
画像とか罫線とか使わないのであればわざわざxlsにしないでcsvで書き出すとか、
そういう解決策は取れないのでしょうか?

(確かxlsはヘッダー情報を持つ場合があるので、特定の文字コードの組み合わせが悪さをしている、と考えてみる。)
ちゃーりー
会議室デビュー日: 2005/02/03
投稿数: 7
投稿日時: 2005-02-03 19:27
>無月 重造さん
ご回答ありがとうございます。

>そういう解決策は取れないのでしょうか?
Excelは表形式で出すという指定をうけているので、csv形式は難しいです。
(文字色、背景色、配置が指定されているため)

>ExcelやWordを直接たたくようなAPI、何かありませんでしたっけ?(記憶があやふや)
すいません、まだASPを使い始めて日が経っていないのでわかっていないのですが、
これはresponse.ContentType 以外でExcelへ書き出す方法があるという事なのでしょうか?

無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2005-02-03 19:41
引用:


>ExcelやWordを直接たたくようなAPI、何かありませんでしたっけ?(記憶があやふや)
すいません、まだASPを使い始めて日が経っていないのでわかっていないのですが、
これはresponse.ContentType 以外でExcelへ書き出す方法があるという事なのでしょうか?



ああ、ありましたありました。
「Microsoft Excel のオブジェクトを使用する」でMSDN検索をかけてみてください。
ASP.NET(というか.NET Framework)からExcelのブックを作成する方法が載っています。

これならxlsを動的に作成することができます。但し、ASP.NETのページを動作させるマシンにExcelが入っている必要があります。
猫山みやお
大ベテラン
会議室デビュー日: 2004/09/09
投稿数: 119
投稿日時: 2005-02-03 22:06
SQL Server2000 を使っているなら、ReportingService を使ってみるのも手です。
Excel 形式でのエクスポートも出来ますし。
機能がWebサービスとしても公開されているので色々便利です。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-02-04 17:35
Response.Charsetはブラウザに吸収されて、Excelには届かないと思います。
<meta>タグでcharsetを指定するのはどうでしょう?

スキルアップ/キャリアアップ(JOB@IT)