2

私は、テーブル データを Excel ファイル (.xls) としてエクスポート/ダウンロードする機能を含む従来の ASP Web サイトを持っています。これは、通常の HTML ヘッダーの代わりに次のコード ブロックを使用して、ユーザーを新しいページにリダイレクトすることによって行われます。

sub PutInTopOfXLS(FileName)
    Response.Buffer = TRUE
    Response.CharSet="UTF-8"
    Response.CodePage=65001
    Response.ContentType = "application/vnd.ms-excel"
    Response.AddHeader "Content-Disposition", "attachment;filename=" & FileName%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns:x="urn:schemas-microsoft-com:office:excel">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <style>
        <!--table
        br {mso-data-placement:same-cell;}
        tr {vertical-align:top;}
        -->
        </style>
    </head>
    <body>  
<%end sub

これは、Firefox、Internet Explorer、および Safari (Mac と Windows の両方) のすべてのユーザー (または少なくとも問題は報告されていません) で正常に動作し、Chrome (20.0.1132.57) を使用する私の開発マシンでは正常に動作します。しかし、私の QA 担当者は、サイト上のいくつかのレポートのうちの 1 つの特定のレポートで、常に実際のコード ページ名 ReportFileName.asp で Chrome にダウンロードし、.asp ファイルにファイルが関連付けられていないという Windows エラーが表示されると報告しています。彼が実際に [Excel で開く] を選択した場合、正しいファイルがダウンロードされています。私たちのオフィスの別の人に Chrome をダウンロードするように依頼しましたが、彼女は問題ありません。ファイルは {filename}.xls としてダウンロードされ、正常に開きます。

QA担当者にとって、この1つのレポートのみに影響を与えているという事実は、問題が特定のレポートにあることを示唆しているため、私は非常に混乱しています. ただし、同じバージョンの Chrome を使用している他の 2 人のユーザーが問題を経験していないという事実は、Chrome の設定に問題があることを示唆しています。

解決策をグーグルで検索したり、SOを検索したりする運がなかったので、質問を投げ出して、誰かがアイデアを持っているかどうかを確認したいと思いました。

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

4

1 に答える 1

0

ファイルをストリーミングすることをお勧めします。これにより、大きなファイルもより適切に処理できるようになります。

これが私の実際の例です。これを使用して、やや不親切なファイル名で保存されている自動化された csv ファイルをいくつかピックアップします。また、このスクリプトを使用して、より適切なファイル名をエンド ユーザーに提示します。

' Set some variables
strSourceFilename = "00008446.dat"
strNiceFilename = "Nice Name Here.csv"

' Read the file and stream  it back to the client
Const adTypeBinary = 1
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = adTypeBinary
BinaryStream.Open
BinaryStream.LoadFromFile "C:\path\to\the\folder\" & strSourceFilename
ReadBinaryFile = BinaryStream.Read
Response.ContentType = "application/x-unknown"
Response.AddHeader "Content-Disposition", "attachment; filename=" & strNiceFilename
Response.BinaryWrite ReadBinaryFile

お役に立てれば!

于 2012-09-10T14:43:05.733 に答える