![](/img/trans.png)
[英]Classic asp code to export data from Access database to an Excel sheet
[英]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.