【VB开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了VB开源代码-VB程序设计——数据表通用打印程序 - 计算机教材的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
VB程序设计——数据表通用打印程序
软件设计开发 郑晓红 约4642字 摘要本文介绍在Visual Basic程序中利用Visual Basic操作Microsoft Excel通过一个可携带记录集参数的过程实现对结构不同、标题不同的各类数据表的打印克服了Visual Basic报表设计功能的局限性解决了在程序运行中动态生成的各种结构不同的记录集对应的数据表的打印输出
问题统一并简化了Visual Basic应用程序对各类不同结构数据表的设计及打印的实现方法。
关键词Visual BasicExcel数据表打印 中图分类号TP311文献标识码A文章编号1009-3044200809-11669-04 The
VB Program Design: Universal Procedure to Print Report ZHENG Xiao-hong From the Computer Science Department of Beijing Dongcheng Audlt College Beijing 100020 China Abstract: This article will introduce using the Visual Basic operation Microsost Excel in a application writen Visual Basic how to print the dissimilar structure and diferen title reports with a procedure that takes a recordset parameter and a string type parameter. The procedure overcame the limit of function of the Visual Basic report design solved the problem to print the different structure recordsets which were produce in a routine unified and simplified the methos to design and print reports to each kind of different structure in a application writen Visual Basic. Key
words: Visual Basic Excel Print Report 1 Visual Basic系统中报表功能的局现限 尽管Visual Basic
系统中提供了设计打印报表功能但是需要对各种结构不同的数据表分别去设计这是一项繁琐的工作并且要在程序设计阶段确定数据表的结构。
然而在信息管理系统中常常需要程序运行中根据用户输入条件而生成各种结构不同的记录集对于这种程序运行中生成的记录集在程序设计时往往不能确定表的结构要打印输出这种动态表Visual Basic中的报表
设计功能是无能为力的。
2 Visual Basic数据表通用打印程序 本人在信息
管理系统开发应用中利用
VB操作Excel设计一个带参数的过程实现对各种结构不同的数据表的打印输出使得对各类不同结构数据表的设计及打印统一并简化为对通用打印过程的一次调用大大提高了
VB程序设计中报表设计和打印的效率。
2.1 通用报表打印过程的参数 在标准模块中声明Public报表打印过程过程的头如下面语句所示 Public Sub TablePrintrs As ADODB.Recordset Title As String 其中TablePrint为过程名参数rs是ADO记录集对象参数Title是字符串变量这两个参数分别将要打印报表对应的记录集和报表标题带入到打印过程在打印过程中从这两个参变量中获取并输出要打印报表的标题、结构及数据。
2.2 在Visual Basic中引用和创建外部Excel对象 在
VB中操作Excel首先要添加引用“Microsof Excel Object Library”。
在设置引用Excel对象之后在过程中声明Excel应用程序对象、工作簿对象并创建相关对象实例。
下面语句依次声明了Excel应用程序对象xlapp、工作簿对象xlbook。
Dim xlapp As Excel.Application Dim xlbook As Excel.Workbook 下面语句依次创建Excel应用程序对象实例、新工作簿文件实例及选择工作表sheet1。
Set xlapp CreateObject34excel.application34 Set xlbook xlapp.Workbooks.Add xlapp.Sheets1.Select 2.3 由记录集的字段名建立表的列标题 将记录集输出为数据表首先要建立数据表的列标题本程序通过一个循环语句将记录集的字段名即表的列标题依次写入当前选定的工作表Sheet1的第1行。
For i 0 Tors.FieldsCount-1 xlapp.Cells1 i1 rs.Fieldsi.Name Next i 2.4 将记录集中的数据写入工作表 下面语句通过一个嵌套的循环将记录集中的记录数据依次写入工作表。
rs.MoveFirst For j 1 To rs.RecordCount For i 0 To rs.Fields.Count-1 xlapp.Cellsj1 i1 rs.Fieldsi.Value Next i rs.MoveNext Next j 2.5 记录工作表的数据区域 为了使程序能自动将数据表完整打印程序必须记录Excel
工作表中的数据区域下面语句分别获取表格数据区域的最右列列号及右下角单元格地址存入变量ec及ec1中。
ec Chr65 rs.Fields.Count -1 ecl ec rs.RecordCount 1 2.6 设置数据表的列宽及文字格式 在打印数据表之前需要设置工作表的格式。
Excel工作表中的“Columns”对象的“AutoFit”方法可实现工作表自动调整列宽为最适合的列宽。
xlapp.Worksheets1.Columns34A:34 ec.AutoFit 在选定工作表的数据区后利用Excel工作表的相关属性设置选定区域的字体、字号及文字对齐方式。
xlapp.Range34a134 ecl.Select With xlapp.Selection .Font.Name 34宋体34 .Font.Size 10 .HorizontalAlignment xlCenter .VerticalAlignment xlCenter End With 2.7 设置数据表的打印格式及打印输出 在打印数据表之前打印格式的设置是必不可少的。
用With xlapp.ActiveSheet.PageSetup????End With括起来的下面一组语句实现了对数据表的打印设置。
设置打印区域、页眉中打印数据表标题和打印日期、页脚中打印页码和页数 .PrintArea 34a1:34 ecl .CenterHeader Title 34 打印日期3434Times New Roman常规3434D3434宋体常规343434 .CenterFooter 34第 P 页共 N 页34 设置打印数据表的上、下、左、右、页边距及页头、页脚边距 .TopMargin Application.InchesToPoints1 .BottomMargin Application.InchesToPoints1 .LeftMargin Application.InchesToPoints0.5 .RightMargin Application.InchesToPoints0.2 .HeaderMargin Application.InchesToPoints0.5 .FooterMargin Application.InchesToPoints0.5 设置打印表格线、设置每页都要打印的列标题、设置表的打印缩放比例。
.PrintGridlines True .PrintTitleRows 341:134 .Zoom 95 下面语句实现将工作表打印并且首先弹出打印预览页面由用护选择时否打印。
xlapp.ActiveWindow.SelectedSheets.PrintOut Preview:True 2.8 完整的打印过程源
代码 Public Sub TablePrintrs As ADODB.Recordset Title As String 39定义Excel应用程序对象xlapp、工作簿对象xlbook Dim xlapp As Excel.Application Dim xlbook As Excel.Workbook Set xlapp CreateObject34excel.application34 39创建Excel应用程序对象实例 Set xlbook xlapp.Workbooks.Add 39创建新工作簿文件 xlapp.Sheets1.Select 39选择工作表sheet1 xlapp.Visible false 39设置电子表格的可见性为假调试时可设置为真以便于观察 39将记录集的字段表的列标题写入Sheet1表的第1行 For i 0 To rs.Fields.Count - 1 xlapp.Cells1 i 1 rs.Fieldsi.Name Next i 39将记录集中的记录写入Sheet1中 rs.MoveFirst For j 1 To rs.RecordCount For i 0 To rs.Fields.Count - 1 xlapp.Cellsj 1 i 1 rs.Fieldsi.Value Next i rs.MoveNext Next j 39获取表格有效区域——即有数据的区域 ec Chr65 rs.Fields.Count - 139最右边列号 ecl ec rs.RecordCount 1 39最右下角单元格地址 39自动调整表格列宽 xlapp.Worksheets1.Columns34A:34 ec.AutoFit 39设置表格字体字号单元格文字对齐 xlapp.Range34a134 ecl.Select With xlapp.Selection .Font.Name 34宋体34 .Font.Size 10 .HorizontalAlignment xlCenter .VerticalAlignment xlCenter End With 39打印设置 With xlapp.ActiveSheet.PageSetup 39设置页眉显进标题和打印日期 .CenterHeader Title 34打印日期3434Times New Roman常规3434D3434宋体常规343434 39设置页脚 .CenterFooter 34第 P 页共 N 页34 39设置上、下、左、右、页边距及页头、页脚边距 .LeftMargin Application.InchesToPoints0.5 .RightMargin Application.InchesToPoints0.2 .TopMargin Application.InchesToPoints1 .BottomMargin Application.InchesToPoints1 .HeaderMargin Application.InchesToPoints0.5 .FooterMargin Application.InchesToPoints0.5 .PrintHeadings False 39设置打印表的行列号 .PrintArea 34a1:34 ecl39设置打印区域 .PrintGridlines True 39设置打印表格线 .PrintTitleRows 341:134 39设置行标题 .PrintTitleColumns 34A:B34 39设置页标题 .CenterHorizontally True 39设置表格打印水平距中 .Zoom 9539设置表格打印的缩放比例也可做为参数代入 End With 39打印预览并打印 xlapp.ActiveWindow.SelectedSheets.PrintOut Preview:True End Sub 3 结束语 在Visual Basic应用程序中调用该过程就可实现Visual Basic操作Excel程序在后台设计及打印数据表用户看不到具体过程只看到漂亮的报表轻易地被打印出来。
这种方法可以充分发挥MS Excel的报表设计打印功能简化了Visual Basic应用程序中的报表设计工作摆脱了Visual Basic中设计打印数据报表的烦脑。
参考文献 1 刘文涛. Visual BasicAccess数据库开发与实例M. 清华大学出版社2006-07. 2 刘韬. Visual Basic 实效编程百例M. 人民邮电出版社2004-08. 3 吴刚. 实现
VB与EXCEL的无缝连接M. http://www.yesky.com/20030217/1652372.shtml2003-02.