QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

Excel2007の保存形式でダウンロードしたい

初めて投稿させて頂きます。

使用環境
・VisualStudio2005
・ASP.net
・Windows 2003 Server
・Office Excel 2007(サーバ側・クライアント側にインストール)

WebアプリケーションでExcel帳票を出力するプログラムを作成しているのですが、
帳票の拡張子を.xlsxと指定してダウンロードすると、
ダウンロードは正しく行えるのですが、開く際に
「ファイル形式またはファイル拡張子が正しくありません」
とエラーが出て開くことができません。

ダウンロードを行っているコードは以下のように記述しています。
--------------------------------------
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition",
"attachment; filename=" + ファイル名 + ".xlsx");
Response.WriteFile(作成したファイルへのパス);
Response.Flush();
Response.End();
--------------------------------------

ためしに拡張子を指定せずに
Response.AddHeader("content-disposition",
"attachment; filename=" + ファイル名);
と記述すると、保存後開くことはできるのですが、.xls形式で保存されてしまっています。

アセンブリはMicrosoft.Office.Interop.Excelの12.0を使用しております。
作成したファイルは、.xlsx形式のテンプレートを読み込んで作成したものです。
色々調べてみたのですが、方法が見つかりません。よかったらご教授お願い致します。

質問者:みさ

回答

Response.ContentType = "application/vnd.ms-excel";

ここを

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

にしてみてください。
_________________ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。

投稿者:ぽぴ王子

編集 履歴 (0)

todo様、ぽぴ様、返信ありがとうございます。

コードを以下のように書きなおして実行してみたのですが、
矢張り同じエラーが出て、ファイルを開くことができません…。

Response.ContentType =
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

ファイル名の後の拡張子をはずして実行すると
.xlsx形式で保存されるのですが、ダウンロードのダイアログにて
開くボタン押下:拡張子が異なりますが開きますか?と確認ダイアログ→OKボタン→ファイルが開ける
保存ボタン押下:保存したファイルを開こうとするとファイル形式または拡張子が正しくないエラー
という風になりました。
ContenTypeを変更するだけでは駄目なのでしょうか。
再度アドバイス頂けたら幸いです。

投稿者:みさ

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。