从传统ASP失败导出数据到excel文件

我试图导出一个logging集到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站点。 请求的网站不可用或无法find。 请稍后再试。

除了这个错误之外,还有什么办法可以把它导出,而不是像HTML那样显示为白色的背景,没有行,就像真正的Excel文件一样?

编辑 :内容types已根据安东尼的答案进行了更正。

date不是硬编码,以允许每天创build多个文件,无需任何用户干预(用户请求)。

我已经更新删除如果不EOF。 我一直注意到很多长时间运行的连接,也许应用程序周围有很多types的问题。 谢谢你的提示。 而且它仍然工作desipte没有logging集是按照要求。

编辑2我已经修复了一个不正确的列名称(哎呀!)的问题,它现在正式从我的计算机上从生产下载。 我有Office 2007的东西。但至less还有一个其他的电脑上不会下载的东西。 这台其他电脑上有Office 2000。 但是,删除标题,并允许它泄漏HTML的工作在所有机器上。

可能Office 2000有这样的事情?

首先是一些家务事。

内容types设置3次没有多大意义。 只要坚持`application \ vnd.ms-excel“一个。

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

输出有多大? 由于你正在缓冲你可能会触及IIS缓冲区的默认最大4MB的IIS6。

closures缓冲或popup到元数据库编辑器,并增加您的应用程序的AspBufferingLimit值。

编辑

接下来我会尝试在我的客户端安装Fiddler并尝试下载。 当您尝试下载文件时,您在小提琴手中看到了什么?

你安装了什么版本的MS Office?

当我看到我的脖子后面的头发上升了,

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

…这对服务器上的区域设置非常敏感。 难道是一台服务器有美国的date格式,另一台有不同的date格式?

如果出错了,最终可能会有一个无效的文件名。

如果您的输出仅指定用于导出(指向excel),则不需要放置HTML和BODY标签。 您可以安全地只写<table>...</table>

只需使用以下代码禁用代码中的缓冲。

 Response.Buffer = False