![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になっております。
【環境】
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")
どなたかご存知の方がいらっしゃれば、ご教授ください。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
>Response.ClearContent()なのですが、A/B各帳票出力前に行っています。
参考URLでは、ClearContentからCloseまでを1セットとしてまわしているようでしたので、以下のような実装としました。私もできるんじゃないかと思って最初アドバイスしてましたが、よくよく考えると、一度、HTTPヘッダを設定した場合、その後のヘッダは無視されますね。
そうなると、ContentTypeには、multipart/mixed をセットした処理を実装する他ありません。
ただし、multipart/mixedは、ブラウザに依存する上に、IEやFireFoxで動く保障がありませんし、また、"application/vnd.ms-excel"のContextTypeを使っている以上、複数ファイルの同時ダウンロードは、HTTPの要件とブラウザの仕様でできないというのが回答になります。
そこは、HTTPの要件がもうそうなってしまっているので私たちの力ではどうにもできないということですね。
http://sonic64.com/2003-11-11.html
ということで、当初お話した、
「ダウンロードする際、JavaScriptなどを使って、2種類のWindowを開き(window.open)、1つはA帳票.xls、もう1つはB帳票用にaspxを分けてダウンロード処理を実装する」
これしか方法論はありません。
また、もっと携わられているWebサイトやWebシステムの機能仕様面をご自身や担当SEなどに相談し見直されることをお勧めします。
宜しくお願いします。
参考URL:http://sonic64.com/2003-11-11.html
kero-mio様
やはり、window.openを使うより他なさそうですね。
貴重なお時間を割いていただきありがとうございました。
No.2
- 回答日時:
私がアドバイスしたResponse.ClearContent() をいれてないみたいですが、なぜでしょうか?
私も現在ASP.NETを動かせる動作環境を持っていないため、感覚で申し上げていて大変恐縮なのですが、Response.ClearContent()を使わずに
ヘッダをセットを2回書いた理由をお聞かせ下さい。
この回答への補足
ご回答ありがとうございます。kero-mio様のおっしゃっていたResponse.ClearContent()なのですが、A/B各帳票出力前に行っています。参考URLでは、ClearContentからCloseまでを1セットとしてまわしているようでしたので、以下のような実装としました。
' A帳票
Response.ClearContent() '←ここで初期クリア
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHeader("content-disposition", "attachment; filename=A帳票.xls")
Response.WriteFile("D:\temp/A帳票.xls")
' クライアントへすべて書き出し
Response.Flush()
Response.Close()
' B帳票
Response.ClearContent() '←ここで2回目クリア
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHeader("content-disposition", "attachment; filename=B帳票.xls")
Response.WriteFile("D:\temp/B帳票.xls")
' クライアントへすべて書き出し
Response.Flush()
Response.Close()
No.1
- 回答日時:
ブラウザによっては、multipart/x-mixed-replace を
ContextTypeに指定し、Response.AddHeaderをそれぞれのファイル名で
1回ずつ呼んであれば、複数ファイルの同時ダウンロードができる
ブラウザもあります。
なので、結論としては、ダウンロードする際、JavaScriptなどを使って、2種類のWindowを開き(window.open)、1つはA帳票.xls、もう1つはB帳票用にaspxを分けてダウンロード処理を実装するしかないように思います。
後はどうしても、JavaScriptなどクライアント側の制御をしたくないという場合は、上記の処理をA帳票、B帳票と2回実行してもいいと思います。
' A帳票
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHeader("content-disposition", "attachment; filename=A帳票.xls")
Response.WriteFile("D:\temp/A帳票.xls")
' A帳票を指示したら、今度はB帳票を出す準備のため、いったんクリア
Response.ClearContent()
' B帳票
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHeader("content-disposition", "attachment; filename=A帳票.xls")
Response.WriteFile("D:\temp/B帳票.xls")
' クライアントへすべて書き出し
Response.Flush()
Response.Close()
これしか方法がないように思います。
(ただ、上記コードはまったく動作確認をしてないので動かないかもしれませんが、感覚だけでもつかんで頂ければ・・・)
宜しくお願いします。
参考URL:http://www.eggheadcafe.com/community/aspnet/2/10 …
この回答への補足
kero-mio様、早速の回答ありがとうございます。
現状、ご教授いただいた下記の方法では実装ができているのですが、ダウンロードの際に小窓が出てしまって余り見栄えがよくありません。
>結論としては、ダウンロードする際、JavaScriptなどを使って、2種類のWindowを開き(window.open)、1つはA帳票.xls、もう1つはB帳票用にaspxを分けてダウンロード処理を実装するしかないように思います。
A帳票、B帳票と2回実行する方法について実装してみました。
kero-mio様の回答と、参考URLをもとに、下記のようにコーディングをしてみたのですが複数でダウンロードダイアログが出ませんでした。
ひとつのブラウザに複数のヘッダをセットするあたりがいまいち、ピンとこない感じです。
' A帳票
Response.ClearContent()
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHeader("content-disposition", "attachment; filename=A帳票.xls")
Response.WriteFile("D:\temp/A帳票.xls")
' クライアントへすべて書き出し
Response.Flush()
Response.Close()
' B帳票
Response.ClearContent()
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Response.AddHeader("content-disposition", "attachment; filename=B帳票.xls")
Response.WriteFile("D:\temp/B帳票.xls")
' クライアントへすべて書き出し
Response.Flush()
Response.Close()
引き続き調査・実装中ですが、取り急ぎ経過報告まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 会計ソフト・業務用ソフト VBA 記録簿の行間を空けないコードを教えて欲しい。 5 2023/07/10 19:29
- Excel(エクセル) Excelの帳票形式をアクセスに取り込むため、 csvのデータ形式になるように、マクロを作成している 2 2022/06/12 22:52
- Access(アクセス) マイクロソフト アクセス2021のフォームビュー作成でレイアウトを帳票形式から単票形式にあとから変更 1 2023/03/03 10:56
- その他(悩み相談・人生相談) 実は今年の末に障害基礎年金が振り込まれる銀行口座の通帳及びキャッシュカードを母が管理しています。 母 2 2022/07/23 13:22
- Excel(エクセル) Excelについて教えてください。 帳票データがあります。 アクセスに取り込むため、 データ形式にし 1 2022/06/08 19:59
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- 事務・総務 帳票類やデータがありません。法人成り。 解体業の会社で現場作業員 兼 事務員として勤めているのですが 3 2023/06/02 13:27
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- ハローワーク・職業安定所 職業安定所の調査 1 2022/05/12 17:44
- システム 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:26
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
【HTML】1クリックで複数ファイルをダウンロードしたい
HTML・CSS
-
複数ファイルダウンロードについて
Microsoft ASP
-
【C#】Page_Loadさせない方法について
その他(プログラミング・Web制作)
-
-
4
ASPでCSVファイルを作成しダウンロードさせる
Microsoft ASP
-
5
ASP.Net 条件により自身を閉じるには
Microsoft ASP
-
6
DropDownListの初期値の設定(C#)
その他(プログラミング・Web制作)
-
7
VB.NETでのzip圧縮について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
印刷ダイアログを表示させない方法
-
VBで帳票するサンプル
-
印刷要求順番と印刷出力順番が...
-
プリンターを指定して印刷するには
-
VBAで印刷スプール終了の判定を...
-
VBAで不特定枚数印刷をしたいで...
-
イベントプロシージャ 印刷が...
-
印刷ダイアログを表示させたくない
-
クリレポのプリンタ設定について
-
VB6上から印刷ダイアログを表示...
-
VB.NET+ActiveReports で印刷...
-
vbaでPDFファイルが印刷されない
-
PHPからVBで作った文書印刷処理...
-
~の文字化けについて
-
エクセルの入力履歴を知りたい
-
テキストファイル印刷 .net VB...
-
プログラムからプリンタジョブ...
-
ファイルのパス指定での印刷方法
-
VBからのプリンタ制御について
-
[Visual Studio] ソースの印刷...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
印刷要求順番と印刷出力順番が...
-
印刷ダイアログを表示させない方法
-
ActiveReportsを使って[印刷ダ...
-
印刷ダイアログを表示させたくない
-
プリンターを指定して印刷するには
-
PDFファイルを印刷し終了するには
-
vbaでPDFファイルが印刷されない
-
VBscriptでPDFファイルを直接印...
-
VBからのプリンタ制御について
-
ACCESSで設定した帳票の用紙サ...
-
イベントプロシージャ 印刷が...
-
VBSでExcelファイル印刷時のプ...
-
phpでの自動印刷
-
VBAにて指定したセルをプルダウ...
-
EXCELファイルの複数ダウンロー...
-
VBAで印刷スプール終了の判定を...
-
プリンタの印刷ジョブを削除し...
-
PHPでPDFファイルの直接印刷
-
A4の2枚をA3の1枚にする編集方法?
-
VBでExcel印刷する時のプリンタ...
おすすめ情報