欢迎来到天天文库
浏览记录
ID:13470119
大小:38.50 KB
页数:13页
时间:2018-07-22
《在vb中打印复杂报表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在VB中打印复杂报表44现代电子技术2001年在VB中打印复杂报表雍震姚君遗(合肥工业大学网络系统研究所合肥230009)摘要在数据库开发过程中,常常会遇到报表打印的问题,本文介绍了VB的几种报表打印方法,其中详细分析了用VB控制Excel生成报表的方法。关键词管理信息系统报表ActiveX模板l概述在数据库管理信息系统中,报表处于非常重要的地位。任何系统不论界面多么友好,操作多么方便,但最终的输出仍要通过报表来体现,所以报表功能的强弱往往是衡量一个系统好坏的重要指标。VB作为一种专业化的数据库开发工具,也提供了对报表功能的支持,象VB5.O中C
2、rystalReports(水晶报表)和VB6.O中新增加的Datareport都可以处理一些简单的数据库报表输出,但用户要求的报表格式往往非常复杂,无规则、嵌套打印、斜线、交叉线是困扰开发人员的最大问题。在制表方面,Excel是一个优秀的表格设计工具,支持各种复杂的表格格式,所以我们可以结合VB和Excel的优点设计一种打印报表的方法,即利用VB操作Excel来生成复杂的报表。2解决思路大多数大型ActiveX—enabled应用程序和其它ActiveX部件,在它们的对象层次中都提供了一个顶层外部可创建对象。该对象提供了对该层次中其它对象的访问
3、,并且还提供对整个应用程序起作用的方法和属性。例如,每个MicrosoftOffice应用程序提供了一个顶层AppIication对象。2.1在VB中引用Excel对象下面语句显示了在VB6.O对MicrosoftExcel的Application对象的引用:(在运行代码前,先选择“工程”菜单中的“引用”,从中选定“MicrosoftExcel8.00bjectI。ibrary”)DimxlAppAsExcel.ApplicationSetxlApp—NewExcel.Application然后,可以用这个变量来访问在Excel应用程序中的从属对
4、象、以及这些对象的属性和方法。例如:SetxlApp—Createobject(”Excel.Application”)‘激活Excel应用程序x1App.Visible—False’隐藏Excel应用程序窗口DimxlsFileAsStringDimxlBookAsExcel.WorkbookSetxlBook=x1App.Workbooks.Open(xlsFile)‘打开工作簿,xlsFile为一个Excel文件DimxlsheetAsExcel.WorksheetSetxlSheet—xlBook.Worksheets(1)’设定工作表这
5、样就可以通过xlSheet的Cell属性来对Excel文件的每个单元格进行控制。2.2用Excel设计报表的模板文件Excel97/2000是一个非常优秀的创建报表的工具。它提供的单元格任意合并、拆分和绘图功能基本上能够满足设计所有复杂报表的需求。它对任意一个单元格的格式随意控制,为设计报表提供了强大的支持。根据用户提供的报表,我们可以很快在Excel里生成模板文件,做成模板主要是为了方便以后的修改,例如用户需要打印几百张学生基本信息表,但其格式都是一致的,并且随着时间和实际情况的变化,表格格式有可能需要改变,这时我们只要将模板文件稍加修改即可。
6、生成工作表前可记录下要填充内容的单元格编号和该单元格内要填充的数据字段以方便程序的编写。如:(以VB6.o附带的数据库BIBI。IO.MDB中万方数据第3期雍震等:在VB中打印复杂报表45的Authors表为例)Cell(i,2)Au—IDCell(?,4)AuthorCen(i,6)yearborn(i表示单元格的行,2,4,6表示单元格的列)在程序里不要直接对模板文件进行操作,只需要拷贝模板文件的一个副本进行操作即可。如下面的例子:DimstrS0urce,strDestinationAsSt“ngstrSource—App.Path&”\E
7、xcels\Authors.xls”‘Authors.xls就是一个模板文件strDestination=App.Path8L”\、Excels\、Temp.xls”FileCopystrSource,strDestination’将模板文件拷贝到一个临时文件2.3生成工作表内容下面就可以给各单元格赋值了。如:dataAuthors.Recordset.MoveLast’获取记录总数dataAuthors.Recordset.MoveFirst‘dataAuthors为Data控件DimiAsIntegerFori=1TodataAuthors.
8、Recordset.RecordCountIfNotIsNull(dataAuthors.Recofdset.Fields(”Au—ID
此文档下载收益归作者所有