• ベストアンサー

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

現在、以下のものを作っています。 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

  • バイナリファイルをブラウザに表示させる時のタイトルバーについて

    バイナリファイルダウンロードに関して伺いたいことがあります。 PHPでバイナリファイル(ExcelやPDF)をブラウザ内にダウンロードさせる場合は、下記のような設定をするかと思います。 header('Content-Type: application/octet-stream'); header('Content-Description: '.$filename); header('Content-Disposition: inline; filename='.$filename); このようにしてブラウザ内での出力は可能なのですが、 この場合ブラウザのタイトルバーにURLが出力されます。 URLはセキュリティ上、表示したくないようなケースの場合 何か設定方法はあるのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 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で保存した場合でも、開く際に上記メッセージを表示させないようにするにはどのようにすればよいでしょうか。 ご教授の程、宜しくお願い致します。

  • EXCELファイルの複数ダウンロードについて

    お世話になっております。 【環境】 ASP.NET(VB) IIS 【質問】 ボタン押下時に2つの異なる帳票(A帳票.xls、B帳票.xls)を作成し、別々にダウンロード処理をさせたいのですが、上記2帳票を別々にダウンロードさせるための実装方法がわかりません。 1つの帳票でしたら、下記の実装方法でダウンロードをすることが確認できました。 Response.Clear() Response.ContentType = "application/vnd.ms-excel" Response.Charset = "" Response.AddHeader("content-disposition", "attachment; filename=A帳票.xls") Response.WriteFile("D:\temp/A帳票.xls") どなたかご存知の方がいらっしゃれば、ご教授ください。 よろしくお願いいたします。

  • ASPでExcelファイルのダウンロード

    はじめて質問します。 よろしくお願いいたします。 さて、現在ASPでDBから取得したデータをExcelでダウンロードする機能を実装しています。 ダウンロード自体は問題なくできています。 #ソース Response.ContentType = "application/octet-stream" Response.AddHeader "Content-Disposition","attachment; filename=sample.xls" Response.Write "項目1" & vbTab & "項目2" Response.End #ここまで この状態ですと、「sample」というSheetのA列とB列にそれぞれ、項目1と項目2が入っているExcelファイルがダウンロードできます。 ここからが質問で、今回シートを4枚設けたいと考えています。現状では「ファイル名」のSheetが一枚できるだけなので、複数のSheetにそれぞれデータを書き込む方法をご存知の方はいらっしゃらないでしょうか? なお、Excelのライブラリを使用しない方法がベストと考えています。 以上、長々となりましたが、よろしくご教示ください。

  • ASPでエクセルの印刷定義・・・

    ASPの初心者です。皆さんご教授願います。 上手くお伝えできるかどうかも不安ですが・・・  ASPでエクセルを起動しています。  そのエクセルをA4横とか、ページヘッダとかページを指定したい(ASP上で)のですが、どのような設定、スクリプトになるんでしょうか? ちなみに・・・ Response.Clear() Response.ContentEncoding = System.Text.Encoding.GetEncoding("shift-jis") Response.ContentType = "application/vnd.ms-excel" Response.AppendHeader("Content-Disposition", "inline;filename=out_excel.xls;") Response.Write("<table>") Response.Write("<tr>") : : Response.Write("</tr>") Response.Write("</table>") Response.End() でエクセルを表示しています。 (Win2K,asp.net) 上手くお伝えできなかったら、すみません。 よろしくお願いします。

  • ファイルのダウンロードが出来ない

    こんばんは。お世話になっております。 CSVファイルをダウンロードさせるスクリプトを作成したのですが、そのスクリプト(ファイル)を、さくらインターネットのサーバへアップすると「ダウンロードせずにブラウザに表示されるだけ」という状態になってしまいます。(ローカル上や別サーバでは問題ない) ファイル上に記述する、Headerですが、サイトによっていくつかの記述方法があったので、以下のように2種類のHeaderを試していますが、共に「さくらインターネットだけがダウンロードしない」状況です。 ファイルをダウンロードさせるスクリプトは、今回初めて作ってみたのですが、他にどのような対処法があるのかが分かりません。考えられる可能性だけでも結構ですので、アドバイスいただけると幸いです。 //Header("Content-type:application/x-csv;"); //header("Content-Disposition: inline; filename=$fname.csv"); header("Content-Type: application/octet-stream;"); header("Content-Disposition: attachment; filename=$fname.csv"); 以上、お忙しい中恐縮ですが宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでcsvダウンロードできない

    phpで配列をCSV にしてボタンを押すとブラウザからダウンロードさせたいのですが、 htmlタグで表示した後に、ボタンを押すとブラウザからダウンロードさせるには、以下の ヘッダーをhtmlタグより下につけると、機能しなくなってダウンロードできなくなって しまっています。 どうしたらいいのでしょうか。 header('Content-Type:application/octet-stream'); header('Content-Disposition:attachment;filename=data.csv');

    • ベストアンサー
    • PHP
  • 【BASP21+ASP】MDEファイルがDL出来なくなった

    いつもお世話になっております。 IIS+VBSで、サーバーに上げたファイルを各自の端末でダウンロード出来る ページを作成しています。 例えば、クライアントで <a href="download.asp?FILE=見積書.xls">見積書</a> をクリックすると、download.aspに変数FILE(見積書.xls)が 渡され、download.asp側でtoolsフォルダ配下の見積書.xlsを ダウンロードする準備を行う、といった具合です。 これまで順調に動いていたのですが、ここ2,3日で急に AccessのMDEファイルがダウンロード出来なくなってしまいました。 本来ならダウンロード確認画面に「XXX.mde」と表示されるはずが、 「download.asp?FILE=XXX_mde」と書き換えられたかのように表示され、 保存しようとしてもエラーになります。 開く を選択するとASPのエラーが表示されるのですが、 BASP21のobjBasp.BinaryReadメソッドのところで「特定できないエラー」が 表示されています。 今までMDEファイルもダウンロード出来ましたし、家で同じ環境を構築しても 上手くいったのですが、会社の環境だけこのような事態になっています。 どなたかこの解決方法をご教授願えませんでしょうか? よろしくお願い致します。 (会社、自宅とも、WinXP+IIS6です) ---------------download.asp のソース-------------- Dim dat Dim objBasp Dim fname Dim bydata fname = Request.QueryString("FILE") Response.ContentType = "application/octet-stream;name=" & fname Response.AddHeader "Content-Disposition","attachment;filename=" & fname Set objBasp = Server.CreateObject("Basp21") bydata = objBasp.BinaryRead(Server.MapPath("tools/" & fname)) Response.AddHeader "Content-Length", ubound(bydata) + 1 Response.BinaryWrite bydata Set objBasp = Nothing -------------------------------------------------------

  • CSVファイルダウンロードダイアログのキャンセルイベント取得方法

    こんにちは。 色々調べてみましたが、なぜかどこにも答えが見つかりませんでしたのでご教授よろしくお願いします。 ASPでCSVファイルをダウンロードする際、 Response.AddHeader "Content-Disposition","attachment; filename=AAA.csv;" としてダウンロードダイアログを出力しています。 このダイアログで、キャンセルボタンのクリックイベントと取りたいのですが、どのようにするのでしょうか? キャンセルした場合、以降に続くサーバサイドの処理をスキップさせたいのですが… よろしくお願いします!

  • CSV出力後に画面を変える方法

    親画面から子画面を表示させ、その子画面から、 CSVダウンロードをさせています。ダウンロードが終わった時点で 親画面を別のASP画面に変更したいのですが、 どうすればよいか教えてください。お願いいたします。 <CSV出力部分> Response.ContentType = "text/csv" Response.AddHeader "Content-Disposition","attachment;filename=" & szCsvNm Response.Write szCSV Response.End

専門家に質問してみよう