こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelの保存について

お世話になります。

<環境>
 Web/DBサーバー
   Windows2003Server
   IIS6.0
   SQL Server2000

 クライアントPC
   WindowsXP Pro /Windows7 Pro
   ブラウザ IE7/8/9
   Excel 2003/2007/2010

ASPにてSQLよりデータを抽出し、Webページ上に表示された内容をダウンロードボタンを押すことによりExcelにて保存できるようにしております。

Response.ContentType = "Application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename=filemane.xls"

Excel2003では保存したExcelは問題なく開けるのですが、Excel2007及び2010で保存し開こうとすると『開こうとしているファイル"○○○○○.xls"の形式は、ファイル拡張子が示す形式と異なります。このファイルを開く前に、ファイルが破損していないこと、信頼できる発行元からのファイルであることを確認してください。ファイルを今すぐ開きますか?』とメッセージが表示されてしまいます。

調べたところ、2007以降のバージョンでは拡張子とファイルの内容が一致しない場合に、確認メッセージを表示する機能が追加されたようです。

対処として、
Response.ContentType = "Application/vnd.openxmlformats-officedocument.
spreadsheetml.sheet"
Response.AddHeader "Content-Disposition", "attachment;filename=filemane.xlsx"
とやってみましたが、やはりメッセージは表示されます。

『はい』を選択すると普通に開き、保存しなおすとそのファイルではメッセージは表示されなくなくなるのですが、できればこの手間は省きたいところです。

どのバージョンのExcelで保存した場合でも、開く際に上記メッセージを表示させないようにするにはどのようにすればよいでしょうか。

ご教授の程、宜しくお願い致します。

投稿日時 - 2013-02-05 11:50:25

QNo.7929143

すぐに回答ほしいです

質問者が選んだベストアンサー

そうですね。
アイコンや関連付けは、拡張子だけを見ているので、中のデータが実際には違っても、Excelのデータのように表示されます。

Excelは、拡張子xlsのデータとして開いてみて、中身の形式が違うことがわかると、別の形式で読み込めないか試すのでしょう。そして、2007以降は、その際にメッセージが出るように変更されているわけです。

サーバーでExcel形式のデータを作成するには、サーバーにExcelをインストールしてExcelのプロセスを操作するか、Excel以外でExcel形式のデータを作成できるものを導入するしかないでしょう。

投稿日時 - 2013-02-06 15:31:04

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

> 送信しているファイルの内容は、Excel形式のデータではなく、テキストデータなどではないですか?

この仮定が正しいのかどうかの返答がないことには、回答のしようがないのですが。

投稿日時 - 2013-02-06 10:34:32

お礼

ご回答ありがとうございます。
おっしゃる通り、テキストデータでございます。

そのデータをクライアントにて開いたときに、Excelファイルとして認識させてExcelで開かせたいところです。

なお、2003では(先に記載した方法で)問題無いと認識していたのですが、保存したファイルを開いて名前を付けて保存とやろうとするとファイルの種類が『Webページ(*.htm; *.html)』となることが判明しました。見た目上は問題無いのですが(ファイルのアイコンはExcelで、Excelで開き、エラーも出ない)、中身はWebページだったようです。ファイルの種類をExcelとし、保存しなおすことでExcelファイルと認識されるようです。

2003と2007以降では大きく仕様が変わり、2003で出来ていたものが2007以降では出来なくなった・・という認識でおりましたが、2003でも結局エラーメッセージが出ないだけでWebページだったということになります。

投稿日時 - 2013-02-06 14:38:21

ANo.1

送信しているファイルの内容は、Excel形式のデータではなく、テキストデータなどではないですか?
そうであれば、まさにそのメッセージの意図する状況なので、そのままで回避する方法はありません。
メッセージを表示しないようにするには、Excel形式のデータを作成するしかありません。

投稿日時 - 2013-02-05 13:04:51

お礼

早速のご回答ありがとうございます。
『Excel形式のデータを作成するしかありません。』ということですが、具体的にどのように作成するのかご教授頂けませんでしょうか。

勉強不足で申し訳ございません。宜しくお願い致します。

投稿日時 - 2013-02-05 15:44:28

あなたにオススメの質問