簡體   English   中英

從Classic ASP導出數據到excel文件失敗

[英]Export data to excel file from Classic ASP failing

我正在嘗試將記錄集導出到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無法打開此Internet站點。 請求的網站不可用或無法找到。 請稍后再試。

超出錯誤是有任何方法使其導出,而不是顯示為具有白色背景和沒有行的HTML,即像真正的Excel文件一樣?

編輯 :內容類型已根據Anthony的答案進行了更正。

日期不是硬編碼的,以允許每天創建多個文件而無需任何用戶干預(用戶請求)。

我已更新刪除If Not EOF。 我一直注意到很多長時間連接,也許應用程序周圍有很多類型的問題。 謝謝你的提示。 它仍然可以工作desipte沒有按要求的記錄集。

編輯2我已經修復了一個不正確的列名稱問題(哎呀!),它現在可以在我的計算機上從生產中正確下載。 我有Office 2007.但事情仍然不會在至少一台其他計算機上下載。 這台其他計算機上有Office 2000。 但是刪除標題並允許它將所有機器上的HTML分解為jsut。

可能Office 2000有這樣的問題嗎?

首先是幾個房子保管。

Content-Type設置3次沒什么意義。 只需堅持使用`application \\ vnd.ms-excel'即可。

而不是使用“ANSI”作為字符集使用“Windows-1252”。

產量有多大? 由於您正在緩沖,您可能會達到ASP緩沖區默認最大4MB的IIS6。

關閉緩沖或彈出元數據庫編輯器並增加應用程序的AspBufferingLimit值。

編輯

我要嘗試的下一件事是在我的客戶端上安裝Fiddler並嘗試下載。 當您嘗試下載文件時,您在小提琴手中看到了什么?

你安裝了什么版本的MS office?

當我看到時,脖子后面的毛發上升了:

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

...對服務器上的區域設置非常敏感。 可能是一台服務器具有美國日期格式,而另一台服務器具有不同的日期格式?

如果出錯,最終可能會出現無效的文件名。

如果您的輸出僅被指定用於導出(excel),則無需放置HTML和BODY標記。 您可以安全地只寫<table>...</table>

只需使用以下代碼禁用代碼中的緩沖即可。

Response.Buffer = False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM