在VB中利用Excel实现报表功能

IT商界

  国内现在的报表设计器很多,这些设计器在设计报表的过程中各有千秋,现在给大家介绍一种比较好的设计打印报表的方法:在VB中利用Excel实现报表功能。

  ◆用VB创建外部Excel对象

  1.从“Project”菜单中选择“References”栏;选择Microsoft Excel 9.0 Object Library,引用Excel类型库。

  2.在通用区域定义Excel对象

  Dim ExlApp As Excel.Application '定义Excel类

  Dim ExlBook As Excel.WorkBook '定义工件簿类

  Dim ExlSheet As Excel.Worksheet '定义工作表类

  3.在程序中操作Excel表常用命令

  Set ExlApp = CreateObject("Excel.Application") '创建Excel对象,激活Excel应用程序

  Set ExlBook = ExlApp.Workbooks.Open("文件名") '打开已经存在的Excel工件簿文件

  ExlApp.Visible = True '设置Excel应用程序窗口可见(或不可见)

  Set ExlSheet = ExlBook.Worksheets("表名") '设置活动工作表

  ExlSheet.Cells(row, col) = 值'给单元格(row,col)赋值

  ExlBook.Save '保存文件

  ExlSheet.PrintOut '打印工作表

  ExlBook.Close (True) '关闭工作簿

  ExlApp.Quit '结束Excel对象

  Set ExlApp = Nothing '释放ExlApp对象

  ◆打印报表

  在VB中,建立一个Form,并放置一个命令按钮,然后在其中输入如下程序:

  Dim ExlApp As Excel.Application '定义Excel类

  Dim ExlBook As Excel.Workbook '定义工件簿类

  Dim Exlsheet As Excel.Worksheet '定义工作表类

  Private Sub Command1_Click()

  Set ExlApp = CreateObject("Excel.Application") '创建Excel应用类

  ExlApp.Visible = True '设置Excel可见

  Set ExlBook = ExlApp.Workbooks.Open("C:\Documents and Settings\axman\My Documents\Book1.xls") '打开EXCEL工作簿

  Set Exlsheet = ExlBook.Worksheets(1) '打开Excel工作表

  Exlsheet.Activate '激活工作表

  Adodc1.Recordset.MoveFirst

  For i = 1 To Adodc1.Recordset.RecordCount

  Exlsheet.Cells(i,1)=Adodc1.Recordset.Fields("node") '给单元格i行1列赋值

  Adodc1.Recordset.MoveNext

  Next

  Exlsheet.PrintOut '执行打印

  ExlApp.Quit '退出Excel

  End

  至此读者应该看到,我们设计的报表打印是通过Excel程序后台来实现的,用户根本看不到具体过程,只看到一张张漂亮的报表轻易地被打印出来了。