2010-02-09 77 views
2

我有一個生成報告的asp.net頁面。無論是好還是壞,整個事情都是使用嵌套表生成的。我能夠將頁面導出爲ex​​cel,但是我失去了所有的格式(無法設置列寬等)。有沒有辦法解決這個問題?我打算添加所需的任何愚蠢的MS Office特定標籤到它的html端。將HTML導出爲Excel而不丟失格式

如果這是不可行的,如果任何人有任何其他想法,要求是用戶需要一個報告中指出:

一),他們可以手動一些個性化/特定區域數據潤色

b)需要隱藏/根據用戶的位置顯示列

c)需要從網站運行。

任何幫助或替代方法的建議將不勝感激。

感謝 喬

回答

2

你真的不能沒有第三方工具很遺憾。

如果知道最終用戶擁有Office 2007+,那麼您可以使用開放XML格式。

Microsoft Open XML

如果你去第三方的路線,他們通常是相當昂貴的,至少$ 130

檢查對

How can I read MS Office files in a server without installing MS Office and without using Interop Library?

雖然你可以隱藏這個堆棧溢出線程/在您的代碼中顯示列以在導出之前操縱列,這不是什麼大不了的事情,只是外觀和格式的格式化會很困難。

+0

我最終在一張紙上繪製了我想要的東西,並將其劃分爲一個解決方案(我希望我永遠不需要做任何維護)。一旦我把它全部放到一張表中,輸出結果是可以接受的,但不是很好。 – Joe 2010-02-12 20:32:54

0

可讓您從ASP.NET生成格式化的Excel工作簿。

您可以看到我們的實時ASP.NET樣本here並下載免費試用版here

聲明:我自己的SpreadsheetGear LLC

0

下面的代碼對我的作品,並保留所有的表格格式。源html表格需要具有屬性runat =「Server」,並且這個ID有效,顯然。

本質上,它會創建一個只包含您的表格並將其寫入Excel文件的新(虛擬)表單。如果您使用的是Excel 2007,那麼您將看到令人惱怒的錯誤消息,即「您嘗試打開的文件與擴展名指定的文件格式不同」,但您可以放心地忽略此內容並說「是」,您要打開它。

Public Sub exportTableExcel(ByVal aTable, ByVal filename) 


    Dim sw As New StringWriter() 
    Dim htw As New HtmlTextWriter(sw) 

    HttpContext.Current.Response.ClearContent() 
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" & filename) 
    HttpContext.Current.Response.ContentType = "application/vnd.xls" 
    HttpContext.Current.Response.Charset = "" 

    ' Create a form to contain the table 
    Dim frm As New HtmlForm() 
    aTable.Parent.Controls.Add(frm) 
    frm.Attributes("runat") = "server" 
    'prevent additional code from being exported 
    frm.attributes("maintainScrollPositionOnPostBack") = "false" 

    frm.Controls.Add(aTable) 
    frm.RenderControl(htw) 
    HttpContext.Current.Response.Write(sw.ToString()) 
    HttpContext.Current.Response.End() 

    frm.Dispose() 
    htw.Dispose() 
    sw.Dispose() 
End Sub 
相關問題