[英]How to output an Excel *.xls file from classic ASP
我有許多生成的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”,並且“所請求的站點不可用或找不到。”
它是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需要在服務器上注冊。 它可以創建和處理Office文檔文件。
在添加Response.Buffer = False之前,我遇到了同樣的問題。 嘗試將代碼更改為以下內容。
Response.Buffer = False Response.ContentType =“ application / vnd.ms-excel” Response.AddHeader“ Content-Disposition”,“附件; filename = excelTest.xls”
我現在唯一的問題是,當Excel打開文件時,我收到以下消息。
您嘗試打開的文件“ FileName [1] .xls”的格式與文件擴展名指定的格式不同。 打開文件之前,請驗證文件是否未損壞且來自受信任的源。 您要立即打開文件嗎?
當您打開文件時,所有數據均顯示在單獨的列中,但電子表格為白色,單元格之間沒有邊框。
希望能有所幫助。
您始終可以只將HTML表導出到XLS文檔。 Excel在理解HTML表方面做得很好。
另一個可能的方法是將HTML表導出為CSV或TSV文件,但是您需要在代碼中設置格式。 這並不是很難完成。
Microsoft.Office.Interop中有一些類允許您以編程方式創建Excel文件,但我一直發現它們有些笨拙。 您可以在此處找到創建電子表格的.NET版本,對於傳統的ASP來說,修改它應該非常容易。
至於.NET,我一直很喜歡CarlosAG的Excel XML Writer Library 。 它具有一個不錯的生成器,因此您可以設置Excel文件,將其另存為XML電子表格,並生成執行所有格式設置和所有操作的代碼。 我知道它不是經典的ASP,但我認為我會把它扔在那里。
通過上面的操作,嘗試添加標題:
"Content-Disposition", "attachment; filename=excelTest.xls"
看看是否可行。 另外,我總是將其用於內容類型:
Response.ContentType = "application/octet-stream"
Response.ContentType = "application/vnd.ms-excel"
我使用過一個“便宜又臟”的把戲……噓,不要告訴任何人。 如果輸出制表符分隔的文本並使文件名為* .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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.