利用Visual Basic设计打印复杂报表

  一.用VB创建外部EXCEL对象

  大多数大型ActiveX-enabled应用程序和其它ActiveX部件,在它们的对象层次中都提供了一个顶层外部可创建对象。该对象提供了对该层次中其它对象的访问,并且还提供对整个应用程序起作用的方法和属性。

  例如,每个MicrosoftOffice应用程序提供一个顶层Application对象。下面语句显示了对Microsoftoffice/9.shtml'target='_blank'class='article'>Excel的Application对象的引用:

  DimxlAppAsExcel.Application

  SetxlApp=NewExcel.Application

  然后,可以用这些变量来访问在EXCEL应用程序中的从属对象、以及这些对象的属性和方法。例如:

  SetxlApp=CreateObject("Excel.Application")

  ‘激活EXCEL应用程序

  xlApp.Visible=False‘隐藏EXCEL应用程序窗口

  SetxlBook=xlApp.Workbooks.Open(strDestination)

  ‘打开工作簿,strDestination为一个EXCEL报表文件

  SetxlSheet=xlBook.Worksheets(1)

  ‘设定工作表

  二.用EXCEL97设计报表的模版文件

  EXCEL97是一个非常优秀的创建报表的工具。它提供的单元格任意合并、拆分和绘图功能基本上能够满足设计所有复杂报表的需求。它对任意一个单元格的格式随意控制,更为随心所欲地设计报表提供了强大的支持。

  根据用户提供的报表,我们可以很快在EXCEL里生成模版文件。所谓生成模版文件只是为了满足用户多方面的需求而设计的。也是为了适合报表以后的更改而做的一点预备工作。例如用户需要打印几百张职工履历表,但其格式都是一致的,并且随着时间和实际情况的变化,表格格式有可能需要改变,我们设计一个模版文件显然可以“以不变应万变”了。

  生成工作表时我们应当记录下要填充内容的单元格编号和该单元格内要填充的数据字段。这样形成一个表格,在写程序时一目了然。如:

  Cell(4,2)职工姓名Cell(6,6)毕业学校

  Cell(4,4)职工性别Cell(6,7)所学专业

  Cell(4,6)职工民族Cell(6,9)工作时间

  (表一)

  在程序里我们当然不要对模版文件进行操作了,我们只需要对模版文件的一个拷贝进行操作就行(这也是我们设计模版文件的一个目的和好处)。如下面的例子:

  DimstrSource,strDestinationAsString

  strSource=App.Path&"ExcelsRegisterFee.xls"

  ‘RegisterFee.xls就是一个模版文件

  strDestination=App.Path&"ExcelsTemp.xls"

  FileCopystrSource,strDestination

  ‘将模版文件拷贝到一个临时文件

  三.生成工作表内容

  有了上述两步工作的铺垫,我们下面接着就只要根据(表一)的格式给各单元格赋值了。如:

  datPrimaryRS.Recordset.MoveFirst

  ‘datPrimaryRS为Data控件

  IfIsNull(datPrimaryRS.Recordset!姓名)=FalseThen

  xlSheet.Cells(4,2)=datPrimaryRS.Recordset!姓名

  EndIf

  IfIsNull(datPrimaryRS.Recordset!性别)=FalseThen

  xlSheet.Cells(4,4)=datPrimaryRS.Recordset!性别

  EndIf

  IfIsNull(datPrimaryRS.Recordset!民族)=FalseThen

  xlSheet.Cells(4,6)=datPrimaryRS.Recordset!民族

  EndIf

  四.打印报表

  生成了工作表后,就可以对EXCEL发出打印指令了。

  注意在执行打印操作之前应该对EXCEL临时文件执行一次保存操作,以免在退出应用程序后EXCEL还提示用户是否保存已修改的文件,让用户觉得莫名其妙。如下语句:

  xlBook.Save‘保存文件

  xlSheet.PrintOut‘执行打印

  xlApp.Quit‘退出EXCEL

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

时间: 2024-08-01 22:22:55

利用Visual Basic设计打印复杂报表的相关文章

利用Visual Basic操作XML数据

visual|xml|数据 什么是XML 扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用. XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引.排序.查找.相关一致性等,XML仅仅是展示数据.事实上XML与其他数据表现形式最大的不同是:他极其简单.这是一个看上去有点琐细的优点,但正是

利用Visual Basic把ASP编写成DLL

visual 这篇文章主要是为想将自己的ASP水平提高的人写的!把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也能保护自己的代码.这篇文章写出来,也是为了给想开发组件网友上一堂入门课! 下面,我们会来编写一个非常简单的组件,重点是知道怎样开发DLL组件,而不是其复杂的代码!这些都要靠你们自己以后的努力了. 服务器端组件 首先,服务器端的组件要有别于客户端的组件.客户端的组件是通过网络传输,依靠HTML来起作用.而且只能在IE上有用.但是服务器端的组件是运行在服务器端,它在服务器上执行

用Visual Basic设计抽奖程序

抽奖活动在生活中屡见不鲜,给我们日常生活也增添了不少乐趣.这里向大家介绍一种都很熟悉的电脑模拟抽奖游戏,就像各类晚会上经常使用的抽奖模式.抽奖程序操作要求方便直观,全体人员都可以清楚地观看抽奖全过程. 一.设计界面 先打开VB,在Form1中定义六个命令按钮,分别用来显示中奖号码的各位数字.默认情况下,参加的人数应少于10万人(当然,可以通过增加或减少按钮的个数,扩大或缩小参加抽奖人数的范围).再增加两个命令按钮,一个设置为"确定"键,当按下时,显示中奖号码.另一个设置为"继

[资料整理]Visual Basic 界面设计大观

Visual Basic 界面设计大观 [前言:]界面的美观和用户亲和性是应用软件成功的首要条件,因此界面往往是程序员最费心的地方.在这个专辑中,我将向读者全面介绍Visual Basic中界面设计的原则和技巧. 界面设计原则 VB应用程序的界面设计 用户界面是一个应用程序最重要的部分,对用户而言,界面就是应用程序,他们感觉不到幕后正在执行的代码.不论花多少时间和精力来编制和优化代码,应用程序的可用性仍然在很大程度上依赖于界面的好坏 尝试新的界面风格 Windows产品风格的不断演进,各应用软件

用Visual Basic 6.0实现自动化测试

visual 摘要:本文探讨了Visual Basic 6.0在测试自动化中应用的可能性,并列举了一些在实际工作中应用的例子 一 现有自动化测试工具的不足 当前,一个摆在软件测试自动化面前的一个很明显的事实是目前可用的工具并不能做一切我们想要它们做的事情:指望任何一种工具能够完全支持众多不同应用的测试自动化是不现实的.由于很难找到一个能完全满足测试自动化需要的测试工具,而且测试自动化工具都十分昂贵,所以常用的做法是使用一种主要的自动化测试工具,然后用传统的编程语言如Java, C++ 和 Vis

Visual Basic 6/VBScript 與Visual Basic.NET 的比較(中)

vbscript|visual 變數範圍(Variable Scope) Visual Basic.NET 讓 Local 變數支援 block 範圍,也就是在迴圈或 If 等等區塊內宣告的變數在外部是看不到的,所以若程式碼撰寫如下Imports System Namespace MyNamespace Module MyModule Sub Main() Dim j as integer For j=1 to 10If True Then Dim i As Integer i=i+1 Cons

与Visual Basic .NET一起使用.NET Framework(转)

visual 使用.NET Framework,Microsoft Visual Basic开发人员可以创建健壮的.在先前的Visual Basic版本中很难编写的应用程序.本文将讨论使用.NET Framework的好处,并且将包括一些功能强大的.Visual Basic开发人员可以与该框架一起使用的特性,包括多线程和线程池(thread pooling).Windows服务和文件系统监控等. 为什么使用框架 单词框架(framework)有几种含意.在这种情况中,它指的是创建和运行应用程序的

Visual Basic中的界面设计原则和编程技巧

在vb里,mdi(multiple document interface,多窗口程序)窗体是这样定义的:"mdi窗体作为一个程序的后台窗口,包含着mdichild属性为true的窗体".在一个vb程序中,至多只能存在一个mdi父窗体,可以有多个mdi子窗体:建立一个mdi父窗体的方法是在vb的file菜单里选择"new mdi form". 在mdi程序运行时,如果子窗口具有菜单,那么当子窗口被激活时,子窗口的菜单就会自动替换父窗口菜单:当子窗口被最小化时,在mdi

《Visual Basic 2012入门经典》----1.6 设计界面

1.6 设计界面 Visual Basic 2012入门经典通常,使界面能执行一定功能的最佳方法是,先设计用户界面,然后添加代码.下面几个小节将创建界面. 1.6.1 在窗体中添加可见控件 首先将一个Button控件添加到窗体中.为此,双击"Toolbox"中的Button控件.Visual Basic将创建一个新按钮,并将其放在窗体的左上角,如图1.9所示.单击工具箱之外的地方,使其消失,以便可以看到新添加的Button控件. 使用"Properties"窗口,按