在.NET环境下将报表导出EXCEL和WORD (转)

本文介绍如何在VB.NET环境中利用DataTable创建报表,并将其导出至Excel和Word中,包括设置样式及页面布局。
在.NET环境下将报表导出EXCEL和WORD (转)[@more@]

.NET环境下将报表导出excelword

XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

vb6开发环境下,本人使用EXCEL作过报表,在.NET环境下开发,本人使用水晶报表。但vb.net同样可以将报表导出到EXCEL和WORD进行输出,制作出专业水平的报表。

具体操作如下:(注:首先需添加引用,选择COM--&gt选择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

总结:

E_Mail:lihonggen0@163.com


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-993175/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-993175/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值