簡體   English   中英

如何從經典ASP輸出Excel * .xls文件

[英]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文檔文件。

如何在Visual Basic中使用電子表格Web組件

使用Office Web組件

在添加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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM