如何从传统ASP输出Excel * .xls文件

我有一些生成的html表格,我需要输出为Excel文件。 该网站是经典的ASP编码。 这可能吗? 可以用Open Office库以某种方式完成吗?


编辑:到目前为止,我已经尝试了一些build议,但似乎失败了。 理想情况下,我希望用户能够点击一个链接,开始下载一个.xls文件。 此代码:

<%@ Language=VBScript %> <% option explicit Response.ContentType = "application/vnd.ms-excel" Response.AppendHeader "content-disposition", " filename=excelTest.xls" %> <table> <tr> <th>Test Col 1</th> <th>Test Col 2</th> <th>Test Col 3</th> <th colspan="2">Test Col 4</th> <th>Test Col 6</th> <th>Test Col 7</th> </tr> <tr> <td>Data</td> <td>Data</td> <td>Data</td> <td>Data</td> <td>Data</td> <td>Data</td> <td>Data</td> </tr> </table> 

IE7被用来获取页面似乎失败。 IE说它“不能下载excelTest.asp”,并且“请求的站点不可用或者找不到”。

它是AddHeader,而不是AppendHeader。

 <%@ Language=VBScript %> <% Option Explicit Response.ContentType = "application/vnd.ms-excel" Response.AddHeader "Content-Disposition", "attachment; filename=excelTest.xls" %> <table> <tr> <td>Test</td> </tr> </table> 

更新:我写了一篇关于如何在ASP Classic中生成Excel文件的博客文章。 它包含一个相当有用的代码来生成xls和csv文件。

MS做了一个叫做Office Web Components的COM库来完成这个任务。 MSOWC.dll需要在服务器上注册。 它可以创build和操作office文档文件。

如何在Visual Basic中使用电子表格Web组件

使用Office Web组件

我用了一个“便宜又脏”的伎俩…嘘不告诉任何人。 如果输出制表符分隔的文本并将文件名称设置为* .xls,则Excel将打开它,而不会有任何异议,问题或警告。 因此,只要将数据转换为带有制表符分隔的文本文件,就可以使用Excel或Open Office打开它。

您必须在http头中指定客户端要下载的文件(附件):

 Response.ContentType = "application/vnd.ms-excel" Response.AppendHeader "content-disposition", "attachment: filename=excelTest.xls" 

http://classicasp.aspfaq.com/general/how-do-i-prompt-a-save-as-dialog-for-an-accepted-mime-type.html

您始终可以将HTML表格导出到XLS文档。 Excel在理解HTML表格方面做得相当不错。

另一种可能的方法是将HTML表格导出为CSV或TSV文件,但是您需要在代码中设置格式。 这不是很难完成。

Microsoft.Office.Interop中有一些类允许您以编程方式创buildExcel文件,但是我总是发现它们有点笨拙。 您可以在这里find一个创build电子表格的.NET版本,对于传统的ASP应该很容易修改。

至于.NET,我一直喜欢CarlosAG的Excel XML Writer库 。 它有一个很好的发生器,所以你可以设置你的Excel文件,保存为一个XML电子表格,它会生成代码来完成所有的格式化和一切。 我知道这不是经典的ASP,但我认为我会把它扔在那里。


用你上面的尝试,尝试添加标题:

 "Content-Disposition", "attachment; filename=excelTest.xls" 

看看是否有效。 另外,我总是使用这个内容types:

  Response.ContentType = "application/octet-stream" Response.ContentType = "application/vnd.ms-excel" 

我有同样的问题,直到我joinResponse.Buffer = False。 尝试将代码更改为以下内容。

Response.Buffer = False Response.ContentType =“application / vnd.ms-excel”Response.AddHeader“Content-Disposition”,“attachment; filename = excelTest.xls”

我现在唯一的问题是,当Excel打开文件,我得到以下消息。

您尝试打开的文件“FileName [1] .xls”与文件扩展名指定的格式不同。 打开文件之前,validation该文件是否已损坏并且来自受信任的来源。 你想现在打开文件吗?

当您打开文件时,数据全部显示在单独的列中,但电子表格全是白色,单元格之间没有边界。

希望有所帮助。