我有许多生成的html表,我需要输出为Excel文件。该网站采用经典ASP编码。这可能吗?可以通过某种方式使用Open Office库来完成吗?
<%@ 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”,并且“请求的网站不可用或无法找到。”
答案 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文档文件。
答案 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 代码。