如何从经典ASP输出Excel * .xls文件

时间:2009-01-13 21:38:40

标签: excel web-applications asp-classic

我有许多生成的html表,我需要输出为Excel文件。该网站采用经典ASP编码。这可能吗?可以通过某种方式使用Open Office库来完成吗?


编辑:到目前为止,我已经尝试了一些建议,但似乎失败了。理想情况下,我希望用户能够单击将开始下载.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”,并且“请求的网站不可用或无法找到。”

7 个答案:

答案 0 :(得分:19)

这是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>

<强>更新 我写了一篇关于如何generate Excel files in ASP Classic的博客文章。它包含一段相当有用的代码来生成xls和csv文件。

答案 1 :(得分:4)

MS创建了一个名为Office Web Components的COM库来执行此操作。需要在服务器上注册MSOWC.dll。它可以创建和操作office文档文件。

How To Use the Spreadsheet Web Component with Visual Basic

Working with the Office Web Components

答案 2 :(得分:0)

您始终可以将HTML表格导出到XLS文档。 Excel在理解HTML表格方面做得非常好。

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

Microsoft.Office.Interop中有一些类允许您以编程方式创建Excel文件,但我总是发现它们有点笨拙。你可以找到creating a spreadsheet here的.NET版本,这对于经典的ASP应该很容易修改。

至于.NET,我一直很喜欢CarlosAG's Excel XML Writer Library。它有一个很好的生成器,因此您可以设置Excel文件,将其另存为XML电子表格,并生成代码以执行所有格式设置和所有内容。我知道这不是经典的ASP,但我认为我会把它扔出去。


根据您在上面尝试的内容,请尝试添加标题:

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

看看是否有效。另外,我总是将其用于内容类型:

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

答案 3 :(得分:0)

我曾经使用过“廉价而肮脏”的伎俩...嘘,不要告诉任何人。如果输出制表符分隔文本并将文件名设为* .xls,则Excel会打开它而不会出现异议,问题或警告。因此,只需将数据转换为带有制表符分隔的文本文件,您就可以使用Excel或Open Office打开它。

答案 4 :(得分:0)

您必须在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

答案 5 :(得分:0)

在添加Response.Buffer = False之前,我遇到了同样的问题。尝试将代码更改为以下内容。

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

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

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

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

希望有所帮助。

答案 6 :(得分:0)

XLS 文件不是真正的 Excel 文件。该代码创建了一个扩展名为 .an xls 的 HTML 文件。当您尝试使用记事本打开 XLS 文件时,您可以看到 HTML 代码。