现在的位置: 首页 > 综合 > 正文

在.NET环境下将报表导出Excel和Word

2013年08月07日 ⁄ 综合 ⁄ 共 5889字 ⁄ 字号 评论关闭
在.NET环境下将报表导出Excel和Word

在VB.NET同样可以将报表导出到Excel和Word进行输出,制作出专业水平的报表。具体操作如下:(注:首先需添加引用,选择COM-->选择Microsoft Word Object Library和Microsoft Excel Object Library组件)

Private Function CreaTable() As DataTable<br /> Dim dt As New DataTable()<br /> dt.Columns.Add("列1", GetType(String))<br /> dt.Columns.Add("列2", GetType(Integer))<br /> dt.Columns.Add("列3", GetType(String))<br /> dt.Columns.Add("列4", GetType(String))<br /> Dim row, row1 As DataRow<br /> row = dt.NewRow()<br /> row!列1 = "行1"<br /> row!列2 = 1<br /> row!列3 = "d"<br /> row!列4 = "a"<br /> dt.Rows.Add(row)<br /> row1 = dt.NewRow()<br /> row1!列1 = "行2"<br /> row1!列2 = 12<br /> row1!列3 = "b"<br /> row1!列4 = "c"<br /> dt.Rows.Add(row1)<br /> Return dt<br /> End Function</p> <p>'2.将表中的内容导出到Excel</p> <p>Dim xlApp As New Excel.Application()<br /> Dim xlBook As Excel.Workbook<br /> Dim xlSheet As Excel.Worksheet<br /> Dim rowIndex As Integer = 1<br /> Dim colIndex As Integer = 0<br /> xlBook = xlApp.Workbooks().Add<br /> xlSheet = xlBook.Worksheets("sheet1")</p> <p>Dim Table As New DataTable()<br /> Table = CreaTable()</p> <p>'将所得到的表的列名,赋值给单元格</p> <p>Dim Col As DataColumn<br /> Dim Row As DataRow<br /> For Each Col In Table.Columns<br /> colIndex = colIndex + 1<br /> xlApp.Cells(1, colIndex) = Col.ColumnName<br /> Next</p> <p>'得到的表所有行,赋值给单元格</p> <p>For Each Row In Table.Rows<br /> rowIndex = rowIndex + 1<br /> colIndex = 0<br /> For Each Col In Table.Columns<br /> colIndex = colIndex + 1<br /> xlApp.Cells(rowIndex, colIndex) = Row(Col.ColumnName)<br /> Next<br /> Next</p> <p>With xlSheet<br /> .Range(.Cells(1, 1), .Cells(1, colIndex)).Font.Name = "黑体"<br /> '设标题为黑体字<br /> .Range(.Cells(1, 1), .Cells(1, colIndex)).Font.Bold = True<br /> '标题字体加粗<br /> .Range(.Cells(1, 1), .Cells(rowIndex, colIndex)).Borders.LineStyle = 1<br /> '设表格边框样式<br /> End With</p> <p>With xlSheet.PageSetup<br /> .LeftHeader = "" &amp; Chr(10) &amp; "&amp;""楷体_GB2312,常规""&amp;10公司名称:" ' &amp; Gsmc<br /> .CenterHeader = "&amp;""楷体_GB2312,常规""公司人员情况表&amp;""宋体,常规""" &amp; Chr(10) &amp;_<br /> "&amp;""楷体_GB2312,常规""&amp;10日 期:"<br /> .RightHeader = "" &amp; Chr(10) &amp; "&amp;""楷体_GB2312,常规""&amp;10单位:"<br /> .LeftFooter = "&amp;""楷体_GB2312,常规""&amp;10制表人:"<br /> .CenterFooter = "&amp;""楷体_GB2312,常规""&amp;10制表日期:"<br /> .RightFooter = "&amp;""楷体_GB2312,常规""&amp;10第&amp;P页 共&amp;N页"<br /> End With<br /> xlApp.Visible = True</p> <p>'3.将表中的内容导出到WORD</p> <p>Dim wordApp As New Word.Application()<br /> Dim myDoc As Word.Document<br /> Dim oTable As Word.Table<br /> Dim rowIndex, colIndex As Integer<br /> rowIndex = 1<br /> colIndex = 0<br /> wordApp.Documents.Add()<br /> myDoc = wordApp.ActiveDocument</p> <p>Dim Table As New DataTable()<br /> Table = CreaTable()<br /> oTable = myDoc.Tables.Add(Range:=myDoc.Range(Start:=0, End:=0), _<br /> NumRows:=Table.Rows.Count + 1, NumColumns:=Table.Columns.Count)<br /> '将所得到的表的列名,赋值给单元格<br /> Dim Col As DataColumn<br /> Dim Row As DataRow<br /> For Each Col In Table.Columns<br /> colIndex = colIndex + 1<br /> oTable.Cell(1, colIndex).Range.InsertAfter(Col.ColumnName)<br /> Next</p> <p>'得到的表所有行,赋值给单元格</p> <p>For Each Row In Table.Rows<br /> rowIndex = rowIndex + 1<br /> colIndex = 0<br /> For Each Col In Table.Columns<br /> colIndex = colIndex + 1<br /> oTable.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName))<br /> Next<br /> Next<br /> oTable.Borders.InsideLineStyle = 1<br /> oTable.Borders.OutsideLineStyle = 1<br /> wordApp.Visible = True<br />

参看本的帖子
http://community.csdn.net/Expert/topic/3417/3417163.xml?temp=.9710504

发布一个操作Excel类库 功能 excel文件创建修改 单元格数据格式编辑 图片 图表 插入控制 外部数据的添加 插入等

下载地址:http://www.journeychina.com/OfficeEditor/

ExcelEditor提供以下方法:

'创建一个Excel对象
   Public Sub Creat()
   
 '打开一个Excel对象
    Public Sub Open(ByVal FileName As String)
    参数描述:FileName :excel文件路径

 '获取一个工作表 
    Public Function GetSheet(ByVal SheetName As String) As Excel.Worksheet
    参数描述:SheetName :工作表名称

 '添加一个工作表
    Public Function AddSheet(ByVal SheetName As String) As Excel.Worksheet

 '删除一个工作表
    Public Function DelSheet(ByVal SheetName As String)

 '重命名一个工作表

    Public Function ReNameSheet(ByVal OldSheetName As String, ByVal NewSheetName As String) As

Excel.Worksheet

    Public Function ReNameSheet(ByVal Sheet As Excel.Worksheet, ByVal NewSheetName As String) As

Excel.Worksheet

 '设置一个单元格的值

    Public Sub SetCellValue(ByVal ws As Excel.Worksheet, ByVal x As Integer, ByVal y As Integer, ByVal

value As Object)

     参数说明  ws:要设值的工作表  X行Y列  value 值
    Public Sub SetCellValue(ByVal ws As String, ByVal x As Integer, ByVal y As Integer, ByVal value As

Object)

 ' 设置一个单元格的属性 字体, 大小,颜色 ,对齐方式

    Public Sub SetCellProperty(ByVal ws As Excel.Worksheet, ByVal Startx As Integer, ByVal Starty As

Integer, ByVal Endx As Integer, ByVal Endy As Integer, ByVal size As Integer, Optional ByVal name As

String = "宋体", Optional ByVal color As Excel.Constants = Excel.Constants.xlAutomatic, Optional ByVal

HorizontalAlignment As Excel.Constants = Excel.Constants.xlLeft)

 参数说明 :ws:要设值的工作表 Startx 起始单元格的行 Starty 起始单元格的列 Endx 结束单元格的行 Endy 结束

单元格的列   size  字体大小 name 字体   color  颜色 HorizontalAlignment  对齐方式

    Public Sub SetCellProperty(ByVal wsn As String, ByVal Startx As Integer, ByVal Starty As Integer,

ByVal Endx As Integer, ByVal Endy As Integer, Optional ByVal size As Integer = 12, Optional ByVal name

As String = "宋体", Optional ByVal color As Excel.Constants = Excel.Constants.xlAutomatic, Optional

ByVal HorizontalAlignment As Excel.Constants = Excel.Constants.xlAutomatic.xlRight)

'合并单元格
    Public Sub UniteCells(ByVal ws As Excel.Worksheet, ByVal Startx As Integer, ByVal Starty As Integer,

ByVal Endx As Integer, ByVal Endy As Integer)

参数说明 :ws:要设值的工作表 Startx 起始单元格的行 Starty 起始单元格的列 Endx 结束单元格的行 Endy 结束

单元格的列

'将内存中数据表格插入到Excel指定工作表的指定位置   为在使用摩板时控制格式时使用
    Public Sub InsertTable(ByVal dt As Data.DataTable, ByVal ws As String, ByVal startX As Integer,

ByVal startY As Integer)

  Public Sub InsertTable(ByVal dt As Data.DataTable, ByVal ws As Excel.Worksheet, ByVal startX As

Integer, ByVal startY As Integer)

  '将内存中数据表格添加到Excel指定工作表的指定位置
    Public Sub AddTable(ByVal dt As Data.DataTable, ByVal ws As String, ByVal startX As Integer, ByVal

startY As Integer)
  Public Sub AddTable(ByVal dt As Data.DataTable, ByVal ws As Excel.Worksheet, ByVal startX As Integer,

ByVal startY As Integer)

  '插入图片操作"
 Sub InsertPictures(ByVal Filename As String, ByVal ws As String)

 Sub InsertPictures(ByVal Filename As String, ByVal ws As String, ByVal Height As Integer, ByVal Width

As Integer)

 Sub InsertPictures(ByVal Filename As String, ByVal ws As String, ByVal left As Integer, ByVal top As

Integer, ByVal Height As Integer, ByVal Width As Integer)

插入图表操作"
    Public Sub InsertActiveChart(ByVal ChartType As Excel.XlChartType, ByVal ws As String, ByVal

DataSourcesX1 As Integer, ByVal DataSourcesY1 As Integer, ByVal DataSourcesX2 As Integer, ByVal

DataSourcesY2 As Integer, Optional ByVal ChartDataType As Excel.XlRowCol = Excel.XlRowCol.xlColumns)

 

    参数说明 :ChartType 为图表类型 ws:要设值的工作表名 DataSourcesX1 图表数据源起始单元格的行

DataSourcesY1 图表数据源起始单元格的列 DataSourcesX2 图表数据源结束单元格的行 DataSourcesY2 图表数据源结

束单元格的列  ChartDataType  图表数据数据方式

    ' 保存文档
    Public Function Save() As Boolean

    ' 文档另存为
    Public Function SaveAs(ByVal FileName) As Boolean

' 关闭一个Excel对象,销毁对象
    Public Sub Close()

这个一定要有!要不然 在系统进程中回有很EXCEL进程没有销毁!

使用方法:引用:VBExcelWordEditor.dll   com引用: Microsoft Excel 10.0 Object Library

暂时只做了这些功能,慢慢扩展
 

 

【上篇】
【下篇】

抱歉!评论已关闭.