在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程序后台来实现的,用户根本看不到具体过程,只看到一张张漂亮的报表轻易地被打印出来了。