我试图将一个记录集导出到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>
再次强调,这在我的机器上可行。但当我在生产环境中执行时,将会给我以下信息:
互联网资源无法下载 MyFile.asp 来自 www.mydomain.com
Internet Explorer 不能打开此互联网站点。 请求的站点不可用或无法找到。 请稍后再试。
除了错误之外,是否有办法使它以类似真正的Excel文件的方式进行导出,并且不显示为带有白色背景和无线条的HTML?
编辑: 根据Anthony的回答,内容类型已经得到了纠正。
日期并非硬编码,以便于每天都能创建多个文件,而无需任何用户干预(用户请求)。
我已更新以删除掉If Not EOF。我已经注意到了很多长时间运行的连接,也许应用程序周围存在许多这些类型的问题。感谢提示。即使没有记录集,它仍然有效。
编辑2: 我已经解决了一个列名错误的问题(哎呀!),现在可以从生产环境中正确下载了。我使用的是Office 2007。但是,至少有一台其他计算机仍无法下载。这另一台计算机上安装有Office 2000。但是在删除标题并允许其溢出HTML时,它可以在所有计算机上正常工作。
Office 2000可能会对这种情况有问题吗?