• ベストアンサー

エクセルのシートをブラウザに表示させたい

現在、以下のものを作っています。 1:ブラウザの画面に「EXCEL」というボタンを置く。 2:データをブラウザに表示する。 3:EXCELというボタンを押す 4:ブラウザに表示したデータがエクセルシート形式でそのままブラウザに表示される こういうのを作っており、今は4の過程で以下のプログラムを入れています。 Response.AddHeader ("content-disposition", "inline; filename=" + fname + ".xls"); しかしこれですと、「ファイルのダウンロード」ボックスが出てきます。 これは、ユーザーが自分でパス指定してダウンロードさせるという方法としては良いのですが、 私がやりたいのはそれではなく、ブラウザにエクセルを表示させたいということです。 誰か知っている方がおられましたらご教授お願いします。

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

  • ベストアンサー
  • EUR
  • ベストアンサー率61% (29/47)
回答No.2

Content-type: application/vnd.ms-excel Content-Transfer-Encoding: base64 Content-Disposition: inline;filename=hoge.xls というヘッダーに変えてみてください。 それでもだめなら、 Content-type: application/vnd.ms-excel だけにしてみてください。

nekoko1977
質問者

お礼

わざわざありがとうございました。 おっしゃるとおりやってみましたが、それでも ダウンロードボックスが出てきます。 ダウンロードボックスを出さないでブラウザに表示させることがどうしてもできません。 ちなみに以下のやり方でやっています。 C#です。 Response.ContentType= "application/vnd.ms-excel"; Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.AddHeader ("content-disposition", "inline; filename=hoge.xls"); // EXCELの出力用のメモリストリームを作成します。 System.IO.MemoryStream memStream = new System.IO.MemoryStream(); // メモリストリームにEXCELエクスポートを行います。 this.xls.Export(rpt.Document, memStream); // 出力ストリームにEXCELのストリームを出力します。 Response.BinaryWrite(memStream.ToArray()); // バッファリングされているすべての内容をクライアントへ送信します。 Response.End(); ↑このやり方でやっても、ヘッダの部分 Response.ContentType= "application/vnd.ms-excel"; Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.AddHeader ("content-disposition", "inline; filename=hoge.xls"); の部分を Response.ContentType= "application/vnd.ms-excel"; だけにしても、結果は同じです。 どうしてもブラウザにそのまま表示させることができないのです。 他にやり方はありませんか? 私の方でも色々調べてみたのですが、分かりませんでした。すみません。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • EUR
  • ベストアンサー率61% (29/47)
回答No.3

うーん、ブラウザのバージョンなどでもかなり挙動が違うので有名ですからね。 以前ためしに Content-type: text/html; Content-Disposition: inline; filename=hoge.xls でうまくいったことがありました。 なぜtext/htmlでうまくいったのかはわかりませんでしたが… 一度試してください。

すると、全ての回答が全文表示されます。
  • ctrlzr
  • ベストアンサー率29% (18/62)
回答No.1

エクセルシートをそのまま表示したいのであれば、ファイル名をURLに指定するだけで表示されます。(IEの場合のみです) ASPのコードまでは分りませんが、行き先をファイルにすればできると思います。

nekoko1977
質問者

お礼

ご教授ありがとうございました。 現在はC#でやっています。 Response.ContentType= "application/vnd.ms-excel"; Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.AddHeader ("content-disposition", "inline; filename=hoge.xls"); // EXCELの出力用のメモリストリームを作成します。 System.IO.MemoryStream memStream = new System.IO.MemoryStream(); // メモリストリームにEXCELエクスポートを行います。 this.xls.Export(rpt.Document, memStream); // 出力ストリームにEXCELのストリームを出力します。 Response.BinaryWrite(memStream.ToArray()); // バッファリングされているすべての内容をクライアントへ送信します。 Response.End(); ↑このやり方でやっても、ヘッダの部分 Response.ContentType= "application/vnd.ms-excel"; Response.AppendHeader("Content-Transfer-Encoding", "base64"); Response.AddHeader ("content-disposition", "inline; filename=hoge.xls"); の部分を Response.ContentType= "application/vnd.ms-excel"; だけにしても、結果は同じです。 どうしてもブラウザにそのまま表示させることができないのです。 他にやり方はありませんか? 私の方でも色々調べてみたのですが、分かりませんでした。すみません。

すると、全ての回答が全文表示されます。

関連するQ&A