下面的代碼對我的作品,並保留所有的表格格式。源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
我最終在一張紙上繪製了我想要的東西,並將其劃分爲一個解決方案(我希望我永遠不需要做任何維護)。一旦我把它全部放到一張表中,輸出結果是可以接受的,但不是很好。 – Joe 2010-02-12 20:32:54