ASP.NET中資料庫資料匯入Excel並列印(2)
最後更新:2017-02-28
來源:互聯網
上載者:User
asp.net|excel|列印|資料|資料庫 大家可能覺得上面的代碼比較複雜,因為上面對於對列印要求比較高的應用,是十分有效。如果只是單單對資料進行匯出,還可以使用簡單的格式,比如使用以下的代碼:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable)
Response.ContentType = "application/ms-Excel"
Response.AddHeader("Content-Disposition", "inline;filename=test.xls")
Response.Write(ConvertDtToTDF(dt))
End Sub
Private Function ConvertDtToTDF(ByVal dt As DataTable) As String
Dim dr As DataRow, ary() As Object, i As Integer
Dim iCol As Integer
' 輸出資料行標題
For iCol = 0 To dt.Columns.Count - 1
Response.Write(dt.Columns(iCol).ToString & vbTab)
Next
Response.Write(vbCrLf)
'輸出資料
For Each dr In dt.Rows
ary = dr.ItemArray
For i = 0 To UBound(ary)
Response.Write(ary(i).ToString & vbTab)
Next
Response.Write(vbCrLf)
Next
End Function
End Class
在上面的代碼中,首先將瀏覽器的輸出類型設定為application/ms-Excel,並設定Excel的輸出類型是在瀏覽器中輸出,預設的名字為test.xls,之後,將調用自訂的過程,該自訂的過程將一個datatable裡的資料以字串流的形式輸出,其中每個datatable裡的資料之間以TAB定位字元分隔,最後再輸出到瀏覽器,輸出效果如下圖:
上面的這種方法,表現的形式比較簡單,但也可以滿足資料匯出的基本要求。那如果要進一步修飾一下的話,要如何做呢?這裡提供一個方法,可以將要匯出的資料先綁定到datagrid,然後再列印該datagrid。這時就可以對要列印出來的datagrid進行格式化,設定datagrid的format等屬性。代碼如下:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable)
Response.ContentType = "application/ms-Excel"
Response.AddHeader("Content-Disposition", "inline;filename=test.xls")
DataGrid1.DataSource = dt
DataGrid1.DataBind()
DataGrid1.RenderControl(writer)
End Sub
列印出來的效果如下圖:
如果要轉到Word裡面列印的話,也同樣可以用上面的方法,只需要將其中的代碼改成:
Response.ContentType = "application/ms-word"
Response.AddHeader("Content-Disposition", "inline;filename=test.doc")
最後,來看一下,如何調用用戶端的Excel進行列印,就是讓客戶一點擊"列印"的按鈕,就可以自動開啟用戶端的Excel,將要列印的內容匯入。要實現這樣的效果,必須要求用戶端的IE瀏覽器設定中,在其中的"安全-本地Intranet-自訂層級中",將"下載未簽名ACTIVX"中設定為啟動或提示。代碼如下:
<script language="vbscript">
Sub exportbutton_onclick
Dim sHTML, oExcel, oBook
SHTML = document.all.item("DataGrid1").outerhtml
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
oBook.HTMLProject.HTMLProjectItems("Sheet1").Text = sHTML
oBook.HTMLProject.RefreshDocument
oExcel.Visible = true
oExcel.UserControl = true
End Sub
</script>
在CODE-BEHIND的代碼中,只需要這樣寫就可以了:
Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable)
DataGrid1.DataSource = dt
DataGrid1.DataBind()
當運行程式時,使用者只需要點擊EXPORT TO Excel的按鈕,此時IE瀏覽器會提示是否允許ACTIVX控制項互動,則選擇"是",就可以開啟用戶端的Excel進行列印操作了。
以上是在ASP.NET中,常用的幾種對Excel進行操作的方法,各有優劣,希望大家可以根據實際情況選用。