ASP.NET中資料庫資料匯入Excel並列印(2)

來源:互聯網
上載者: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進行操作的方法,各有優劣,希望大家可以根據實際情況選用。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.