在.NET環境下將報表資料匯出EXCEL和WORD

來源:互聯網
上載者:User
excel|word|匯出excel|資料 在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) & "&""楷體_GB2312,常規""&10公司名稱:" ' & Gsmc
.CenterHeader = "&""楷體_GB2312,常規""公司人員情況表&""宋體,常規""" & Chr(10) & "&""楷體_GB2312,常規""&10日 期:"
.RightHeader = "" & Chr(10) & "&""楷體_GB2312,常規""&10單位:"
.LeftFooter = "&""楷體_GB2312,常規""&10製表人:"
.CenterFooter = "&""楷體_GB2312,常規""&10製表日期:"
.RightFooter = "&""楷體_GB2312,常規""&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和“宏”。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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