在.NET環境下將報表數據導出EXCEL和WORD - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 在.NET環境下將報表數據導出EXCEL和WORD (http://www.webasp.net/article/8/7968.htm) |
| -- 作者:未知 -- 發佈日期: 2003-12-17 |
| 在VB6開發環境下,本人使用EXCEL作過報表,在.NET環境下開發,本人使用水晶報表。但VB.NET同樣可以將報表導出到EXCEL和WORD進行輸出,製作出專業水平的報表。
具體操作如下:(註:首先需添加引用,選擇COM,選擇Microsoft Word 10.0 Object Library和Microsoft Excel 10.0 Object Library組件) 1.先創建一個DataTable,作為數據來源,也可以另將其它的數據源。 Private Function CreaTable() As DataTable Dim dt As New DataTable() dt.Columns.Add("列1", GetType(String)) dt.Columns.Add("列2", GetType(Integer)) dt.Columns.Add("列3", GetType(String)) dt.Columns.Add("列4", GetType(String)) Dim row, row1 As DataRow row = dt.NewRow() row!列1 = "行1" row!列2 = 1 row!列3 = "d" row!列4 = "a" dt.Rows.Add(row) row1 = dt.NewRow() row1!列1 = "行2" row1!列2 = 12 row1!列3 = "b" row1!列4 = "c" dt.Rows.Add(row1) Return dt End Function 2.將表中的內容導出到Excel Dim xlApp As New Excel.Application() Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim rowIndex, colIndex As Integer rowIndex = 1 colIndex = 0 xlBook = xlApp.Workbooks().Add xlSheet = xlBook.Worksheets("sheet1") Dim Table As New DataTable() Table = CreaTable() '將所得到的表的列名,賦值給單元格 Dim Col As DataColumn Dim Row As DataRow For Each Col In Table.Columns colIndex = colIndex + 1 xlApp.Cells(1, colIndex) = Col.ColumnName Next '得到的表所有行,賦值給單元格 For Each Row In Table.Rows rowIndex = rowIndex + 1 colIndex = 0 For Each Col In Table.Columns colIndex = colIndex + 1 xlApp.Cells(rowIndex, colIndex) = Row(Col.ColumnName) Next Next With xlSheet .Range(.Cells(1, 1), .Cells(1, colIndex)).Font.Name = "黑體" '設標題為黑體字 .Range(.Cells(1, 1), .Cells(1, colIndex)).Font.Bold = True '標題字體加粗 .Range(.Cells(1, 1), .Cells(rowIndex, colIndex)).Borders.LineStyle = 1 '設表格邊框樣式 End With With xlSheet.PageSetup .LeftHeader = "" & Chr(10) & "&""標楷體,常規""&10公司名稱:" ' & Gsmc .CenterHeader = "&""標楷體,常規""公司人員情況表&""細明體,常規""" & Chr(10) & "&""標楷體,常規""&10日 期:" .RightHeader = "" & Chr(10) & "&""標楷體,常規""&10單位:" .LeftFooter = "&""標楷體,常規""&10製表人:" .CenterFooter = "&""標楷體,常規""&10製表日期:" .RightFooter = "&""標楷體,常規""&10第&P頁 共&N頁" End With xlApp.Visible = True 3.將表中的內容導出到WORD Dim wordApp As New Word.Application() Dim myDoc As Word.Document Dim oTable As Word.Table Dim rowIndex, colIndex As Integer rowIndex = 1 colIndex = 0 wordApp.Documents.Add() myDoc = wordApp.ActiveDocument Dim Table As New DataTable() Table = CreaTable() oTable = myDoc.Tables.Add(Range:=myDoc.Range(Start:=0, End:=0), NumRows:=Table.Rows.Count + 1, NumColumns:=Table.Columns.Count) '將所得到的表的列名,賦值給單元格 Dim Col As DataColumn Dim Row As DataRow For Each Col In Table.Columns colIndex = colIndex + 1 oTable.Cell(1, colIndex).Range.InsertAfter(Col.ColumnName) Next '得到的表所有行,賦值給單元格 For Each Row In Table.Rows rowIndex = rowIndex + 1 colIndex = 0 For Each Col In Table.Columns colIndex = colIndex + 1 oTable.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName)) Next Next oTable.Borders.InsideLineStyle = 1 oTable.Borders.OutsideLineStyle = 1 wordApp.Visible = True 總結:Microsoft Word 10.0(版本號)對像庫提供了Word的大部分操作。類似的也有Microsoft Excel 對像庫,我們可以用代碼與Word和Excel進行會話並控制它們。還有很重要的一點,就是我們必須學會使用OFFICE軟件的「宏」。「宏」是一系列的Word(或其它OFFICE軟件)命令和指令的組合,都是生成VB代碼。我們可用「工具/宏/錄製新宏」來錄製「宏」,錄製完成後查看「宏」的代碼就可以知道實現此功能的一系列的VB代碼,我們把這些代碼拷貝到VB.net編輯器中,稍微改動後就可以使用。要想做好OFFICE開發,必須用好VBA和「宏」。 |
| webasp.net |