@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

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

1
投稿者投稿内容
プリメーラ
会議室デビュー日: 2006/08/26
投稿数: 5
投稿日時: 2006-09-07 14:40
WEBサーバからCSVファイルをダウンロードするプログラムを作っています。
言語はASPを利用しています。
ソースは以下のとおりです。

<HTML>
<HEAD>
<TITLE>CSVでダウンロード</TITLE>
</HEAD>
<BODY>

<TABLE>
<TR>
<TD>AAA</TD>
<TD>BBB</TD>
<TD>CCC</TD>
</TR>
</TABLE>

<%
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment;filename=xxxxxx.csv"
Response.End()
%>

</BODY>
</HEAD>
</HTML>

これを起動すると
次の2とおりの表示が確認されました。

(1)Windows2000SP4 Office2000, WindowsXP Pro Office2000で確認
AAA,BBB,CCCとxxxxxx[1].csvに表示される。

(2)WindowsXP Home Office2003で確認
プログラムソース全部がxxxxxx[1].csvに表示される。

上記のように
2とおりに表示される原因をご存知の方、ご教授ください。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-09-07 15:06
こんにちは。

2通りに表示される原因はわかりませんが、このようなソースだと
Response.AddHeader や Response.ContentType が実行されるより
も前に <HTML> の出力の時点でレスポンスヘッダが出力されてしまっている
のではないでしょうか。
こういった場合は HTML を書かずに、直接 CSV (とレスポンスヘッダ)を出力す
るコードを書きます。書くとしたらこんな感じになるでしょうか(検証していません)。

コード:

<%
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment;filename=xxxxxx.csv"
Response.Write "AAA,BBB,CCC"
Response.End()
%>


このあたりは HTTP の処理の流れにも通じるはずなので、興味があればいろい
ろと調べてみてください。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
プリメーラ
会議室デビュー日: 2006/08/26
投稿数: 5
投稿日時: 2006-09-07 16:15
早速のアドバイス、
ありがとうございます。

画面に表示するか、CSVに出力ダウンロードするかの二者択一の
表示方法を考えていまして、
<TABLE>〜</TABLE>の画面表示をそのままCSVに出力できるかと思い、試行錯誤しています。
<HTML>を使わないということは、
CSVへの出力プログラムは画面表示とは別にしないといけないですね。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)