2009-01-13 24 views
10

我有一些生成的html表格需要輸出爲Excel文件。該網站使用經典的ASP。這可能嗎?它可以通過某種方式使用Open Office庫來完成嗎?如何從傳統ASP輸出Excel * .xls文件


編輯:到目前爲止,我已經嘗試了一些建議,但它似乎失敗了。理想情況下,我希望用戶能夠點擊將開始下載.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」,並且「請求的站點不可用或無法找到」。

+0

對此結尾有評論:http://blogs.msdn.com/vsofficedeveloper/pages/Office-2007-Open-XML-MIME-Types.aspx – Fionnuala 2009-01-14 14:13:59

+0

我在該頁面上看到的唯一評論是一些附加說明表明需要在服務器上爲要支持的MIME類型進行的更改。你是說這是我失蹤的作品嗎? – cdeszaq 2009-01-14 15:12:06

+0

我有一個相關的問題在這裏,不勝感激,如果任何人都可以看看, http://stackoverflow.com/questions/1383366/generating-excel-file-error – George2 2009-09-05 13:49:40

回答

18

它的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文件。

0

您可以隨時將HTML表格導出到XLS文檔。 Excel在理解HTML表格方面做得相當不錯。

另一種可能是將HTML表格導出爲CSV或TSV文件,但您需要在代碼中設置格式。這並不難完成。

在Microsoft.Office.Interop中有一些類允許您以編程方式創建Excel文件,但我總是發現它們有點笨拙。你可以找到一個.NET版本creating a spreadsheet here,對於傳統的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" 
+0

的VBScript拋出一個錯誤: 對象不支持此屬性或方法:'Response.AppendHeader' – cdeszaq 2009-01-14 20:29:47

0

有一個'便宜和骯髒'的伎倆,我用過......噓不告訴任何人。如果輸出製表符分隔的文本並創建文件名* .xls,則Excel將打開它,而不會提出異議,問題或警告。因此,只需將數據轉換爲帶有製表符分隔的文本文件,然後就可以使用Excel或Open Office打開它。

0

我有同樣的問題,直到我加入Response.Buffer = False。嘗試將代碼更改爲以下內容。

將Response.Buffer =假 Response.ContentType = 「應用/ vnd.ms-EXCEL」 Response.AddHeader 「內容處置」, 「附件;文件名= excelTest.xls」

唯一的問題我現在是當Excel打開文件時,我收到以下消息。

您嘗試打開的文件'FileName [1] .xls'與文件擴展名指定的文件格式不同。在打開文件之前,驗證該文件是否已損壞並且來自受信任的來源。你想現在打開文件嗎?

當您打開文件時,數據全部出現在單獨的列中,但電子表格全是白色的,單元格之間沒有邊界。

希望有所幫助。

相關問題