Excelファイルのダウンロードについて

解決


kuromaku  2004-09-15 10:31:59  No: 116305  IP: [192.*.*.*]

いつも参考にさせていただいています。

VisualBasic.NETでASPを開発しています。Webフォームのボタンをクリックすると、サーバー側でExcel帳票の雛形にDBから取得した値を書き込み、それをダウンロード(Content-dispositionはattachment)させるという処理を作成したいのですが、この条件(Excel帳票の雛形を使用すること)で、

ファイルを物理的にディスクに書き込まずに(ファイルを生成せずに)、ダウンロードさせることは可能でしょうか?

また、仮にできないとして、ダウンロード後にファイルを消去するという方法を取る場合、どのタイミングでどのようなで消去するのが妥当でしょうか?(できればディスクにファイルをためたくないため)


似たような経験をされた方おりませんでしょうか?

編集 削除
マグ  2004-09-15 14:03:34  No: 116306  IP: [192.*.*.*]

作ったデータファイルなどへのパスを取っておき、
閉じるときそのパスを使って、ファイルを削除するようにしてみてはどうでしょうか。

編集 削除
kuromaku  2004-09-15 15:34:06  No: 116307  IP: [192.*.*.*]

マグさん、ありがとうございます。

やはりファイルを作成しないとExcelのダウンロードは無理のようなので、一旦保存してからダウンロードするようにしたいと思います。

ファイルの消去に関しても、Session_End、及びApplication_Endのタイミングでで消去するようにしたいとおもいます。

ありがとうございました。

編集 削除
葉月  2004-09-15 16:02:03  No: 116308  IP: [192.*.*.*]

環境的にはWANなんでしょうかね

LANだったらサーバがファイル作成のお仕事やるなら
共有フォルダ作って
一緒にこちらのパス(コンピュータ名とフォルダ名)をサーバに渡してあげて

サーバのお仕事の最後にSAVEでそのパスに書き込めば
できるような気もしないような事も無いが
要は実態をサーバに作ってダウンではなく
実態を直接ローカルに作成させるということ

編集 削除
36NET  2004-09-15 17:04:28  No: 116309  IP: [192.*.*.*]

.netじゃないソースですが

Const adTypeBinary = 1
Dim objStream  '= As ADODB.Stream
Dim vData        '= As Byte
Dim objFile

Set objStream = CreateObject("ADODB.Stream")
With objStream
  .Type = adTypeBinary
  .Open
  .LoadFromFile "C:\**\**.xls"
  vData = .Read(-1)
  .Close
End With

Set objStream = Nothing

Set objFile = Server.CreateObject("Scripting.FileSystemObject")
objFile.DeleteFile "C:\**\**.xls"
Set objFile = Nothing

Response.ContentType = "application/x-download"
Response.AddHeader "Content-Disposition" , " attachment; filename=**.doc"
Response.BinaryWrite vData

こんなやり方が個人的にはベストかなと?

編集 削除