3

レコード セットを Excel にエクスポートしようとしていますが、運用サーバーで失敗し続けているようです。ただし、私の開発ワークステーションでは問題なく動作するようです。私はサーバー関連の問題に適合するのだろうかと思っていますが、まったく同じコード、よく似たコード、同じ設定を使用して問題なくエクスポートできる他のアプリがあります。

<%@ Language=VBScript %>
<%Response.expires = -1%>
<%response.buffer = true%>
<%
     Dim today 
     today = "_" + Replace(Date,"/","") + "_" + Replace(Time(),":", "")

     Response.Charset = "ANSI"
     Response.ContentType = "application/octet-stream"
     Response.ContentType = "application/vnd.ms-excel"
     Response.AddHeader "Content-Disposition", "attachment; filename=List" + today + ".xls" 
     Response.ContentType = "application/download"

     set Cnn = server.CreateObject("ADODB.connection")
     Cnn.ConnectionString = Application("Cnn_ConnectionString")
     Cnn.open      

     set rs1 = server.CreateObject("ADODB.Recordset") 
     SQLCollections = "Sp_MysProc @Param1=" & Session("var1")
     rs1.open SQLCollections,cnn
%>
<html>
    <body>
        <table>
            <tr>
                <td>Number</td> 
                <td>Name</td> 
            </tr>
        <%if not rs.eof then
            do while not rs.eof %>
            <tr> 
                <td><%=rs("Number") %></td> 
                <td><%=rs("Name") %></td>   
            </tr>
        <%
            rs.MoveNext
            Loop
           rs.Close
           set rs = Nothing 
         End if        
        %>
        </table>
    </body>
</html>

繰り返しますが、これは私のマシンから機能します。しかし、本番環境から実行すると、次のメッセージが表示されます。

Internet Explorer が www.mydomain.com から MyFile.asp をダウンロードできない

Internet Explorer はこのインターネット サイトを開くことができませんでした。要求されたサイトは利用できないか、見つかりません。後でもう一度やり直してください。

エラーを超えて、それをエクスポートして、実際の Excel ファイルのように背景が白で行のない HTML として表示されないようにする方法はありますか?

編集: Anthony の回答に基づいて、コンテンツ タイプが修正されました。

ユーザーの介入なしで毎日複数のファイルを作成できるように、日付はハードコーディングされていません (ユーザーが要求します)。

If Not EOF を削除するように更新しました。接続が長時間続いていることに気づきました。おそらく、このようなタイプの問題がアプリの周りにいくつかあるのでしょう。ヒントをありがとう。また、要求どおりのレコードセットがないにもかかわらず、引き続き機能します。

編集 2 不適切な列名の問題を eof で修正し (おっと!)、本番環境からコンピューターに正しくダウンロードされるようになりました。私は Office 2007 を持っています。しかし、少なくとも 1 台の他のコンピューターにダウンロードできません。この別のコンピュータには Office 2000 がインストールされています。ただし、ヘッダーを削除して、HTML をスピルアウトできるようにすると、すべてのマシンで動作します。

Office 2000 でこのような問題が発生する可能性はありますか?

4

4 に答える 4

2

最初にいくつかの家事を維持します。

Content-Type を 3 回設定する意味はほとんどありません。「application\vnd.ms-excel」に固執するだけです。

文字セットとして「ANSI」を使用する代わりに、「Windows-1252」を使用します。

出力の大きさは?バッファリングしているため、IIS6 の ASP バッファのデフォルトの最大値である 4MB に達している可能性があります。

バッファリングをオフにするか、メタベース エディターにポップして、アプリケーションの AspBufferingLimit 値を増やします。

編集

次に試みることは、クライアントにFiddlerをインストールし、ダウンロードを試みることです。ファイルをダウンロードしようとすると、フィドラーに何が表示されますか?

インストールされている MS Office のバージョンは何ですか?

于 2009-07-28T20:07:33.157 に答える
1

私が見たとき、私の首の後ろの毛が上がった:

 today = "_" + Replace(Date,"/","") + "_" + Replace(Time(),":", "")

...これは、サーバーのロケール設定に非常に敏感です。あるサーバーの日付形式が米国で、別のサーバーの日付形式が異なる可能性はありますか?

それがうまくいかなかった場合、無効なファイル名になる可能性があります。

于 2009-07-28T20:09:55.943 に答える
0

次のコードを使用して、コードのバッファリングを無効にするだけです。

Response.Buffer = False
于 2010-07-12T05:33:53.167 に答える
0

出力が (Excel への) エクスポート専用に指定されている場合、HTML および BODY タグを配置する必要はありません。のみを安全に書き込むことができます<table>...</table>

于 2009-08-26T06:37:59.273 に答える