说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

基于VB和EXCEL的报表设计及打印

HTML文档下载 WORD文档下载 PDF文档下载
基于VB和EXCEL的报表设计及打印

文/朱诗兵 高栓


  在现代管理信息系统的开发中,经常涉及到数据信息的分析、加工,
最终还需把统计结果形成各种形式的报表提供给领导决策参考,或进行外
部交流。在Visual Basic中制作报表,通常是用数据环境设计器(Data
Environment Designer)与数据报表设计器(Data Report Designer),或者
使用第三方产品来完成。但对于大多数习惯于Excel报表的用户而言,用以
上方法生成的报表在格式和功能等方面往往不能满足他们的要求。

  由于Excel具有自己的对象库,在Visual Basic工程中可以加以引用,
通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输
出。这样实现了Visual Basi应用程序对Excel的控制。本文将针对一个具
体实例,阐述基于VB和EXCEL的报表设计及打印过程。

 1)创建Excel对象

  Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对
象到透视表,图表等复杂的对象。下面简单介绍一下其中最重要,也是用
得最多的五个对象。

(1)Application对象

  Application对象处于Excel对象层次结构的顶层,表示 Excel自身的
运行环境。

(2)Workbook对象

  Workbook对象直接地处于Application对象的下层,表示一个Excel工
作薄文件。

(3)Worksheet对象

  Worksheet对象包含于Workbook对象,表示一个Excel工作表。

(4)Range对象

  Range对象包含于Worksheet对象,表示 Excel工作表中的一个或多个
单元格。

(5)Cells对象

  Cells对象包含于Worksheet对象,表示Excel工作表中的一个单元格。
  如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码
启动了Excel并创建了一个新的包含一个工作表的工作薄:

Dim zsbexcel As Excel.Application
Set zsbexcel = New Excel.Application
    zsbexcel.Visible = True

如要Excel不可见,可使zsbexcel.Visible = False

  zsbexcel.SheetsInNewWorkbook = 1
  Set zsbworkbook = zsbexcel.Workbooks.Add

 2)设置单元格和区域值

  要设置一张工作表中每个单元格的值,可以使用Worksheet对象的
Range属性或Cells属性。

With zsbexcel.ActiveSheet
    .Cells(1, 2).Value = "100"
    .Cells(2, 2).Value = "200"
    .Cells(3, 2).Value = "=SUM(B1:B2)"
    .Range("A3:A9") = "中国人民解放军"
  End With

  要设置单元格或区域的字体、边框,可以利用Range对象或Cells对象
的Borders属性和Font属性:

  With objexcel.ActiveSheet.Range("A2:K9").Borders  '边框设置
    .LineStyle = xlBorderLineStyleContinuous
    .Weight = xlThin
    .ColorIndex = 1
  End With
  With objexcel.ActiveSheet.Range("A3:K9").Font  '字体设置
    .Size = 14
    .Bold = True
    .Italic = True
    .ColorIndex = 3
  End With

  通过对Excel单元格和区域值的各种设置的深入了解,可以创建各种复
杂、美观、满足需要的、具有自己特点的报表。

 3)预览及打印

  生成所需要的工作表后,就可以对EXCEL发出预览、打印指令了。

  zsbexcel.ActiveSheet.PageSetup.Orientation = xlPortrait   '
  设置打印方向
  zsbexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4   '
  设置打印纸的打下
  zsbexcel.Caption = "打印预览"        '设置预览窗口的
  标题
  zsbexcel.ActiveSheet.PrintPreview      '打印预览
  zsbexcel.ActiveSheet.PrintOut        '打印输出

  通过打印方向、打印纸张大小的设置,不断进行预览,直到满意为止,
最终进行打印输出。

  为了在退出应用程序后EXCEL不提示用户是否保存已修改的文件,需使
用如下语句:

  zsbexcel.DisplayAlerts = False
  zsbexcel.Quit    '退出EXCEL
  zsbexcel.DisplayAlerts = True

  如此设计的报表打印是通过 EXCEL程序来后台实现的。对于使用者来
说,根本看不到具体过程,只看到一张张漂亮的报表轻易地被打印出来了。

 4)具体实例

  下面给出一个具体实例,它在window98、Visual Basic 6.0、
Microsoft Office97的环境下调试通过。

  在VB中启动一个新的Standard EXE工程,在“工程”菜单的“引用”
选项下引用Excel Object Library;然后在Form中添加一个命令按钮
cmdExcel;最后在窗体中输入如下代码:

  Dim zsbexcel As Excel.Application
      Private Sub cmdExcel_Click()
          Set zsbexcel = New Excel.Application
   zsbexcel.Visible = True
   zsbexcel.SheetsInNewWorkbook = 1
   Set zsbworkbook = zsbexcel.Workbooks.Add
   With zsbexcel.ActiveSheet.Range("A2:C9").Borders   '边框设置
      .LineStyle = xlBorderLineStyleContinuous
      .Weight = xlThin
      .ColorIndex = 1
      End With
   With zsbexcel.ActiveSheet.Range("A3:C9").Font  '字体设置
       .Size = 14
      .Bold = True
      .Italic = True
      .ColorIndex = 3
   End With
  zsbexcel.ActiveSheet.Rows.HorizontalAlignment =
xlVAlignCenter   '水平居中

  zsbexcel.ActiveSheet.Rows.VerticalAlignment =
xlVAlignCenter    '垂直居中

  With zsbexcel.ActiveSheet
    .Cells(1, 2).Value = "100"
    .Cells(2, 2).Value = "200"
    .Cells(3, 2).Value = "=SUM(B1:B2)"
    .Cells(1, 3).Value = "中国人民解放军"
    .Range("A3:A9") = "50"
  End With
 zsbexcel.ActiveSheet.PageSetup.Orientation = xlPortrait    '
xlLandscape
 zsbexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4
 zsbexcel.ActiveSheet.PrintOut
 zsbexcel.DisplayAlerts = False
 zsbexcel.Quit
 zsbexcel.DisplayAlerts = True
 Set zsbexcel = Nothing

调用控制面板项目大全-Delphi资料 动态改变当前显示模式-Delphi资料 动态改变屏幕分辨率-Delphi资料 动态建立不常用的对象-Delphi资料 对控制面板进行操作-Delphi资料 返回程序执行参数-Delphi资料 防止 Win95 显示严重错误-Delphi资料 改变操作系统日期-Delphi资料 改计算机名-Delphi资料 关闭 Windows-Delphi资料 关闭外部应用程序-Delphi资料 监视剪贴板内容-Delphi资料 检测磁盘是否变化-Delphi资料 检测驱动器容量-Delphi资料 检查驱动器是否就绪:-Delphi资料 建立简单的任务栏应用程序-Delphi资料 将程序放在Windows启动中-Delphi资料 将光标限制在某区域-Delphi资料 将文件放入回收站-Delphi资料 禁止用户切换任务-Delphi资料 控制面板大全-Delphi资料 控 制 系 统 菜 单-Delphi资料 拦截消息处理过程-Delphi资料 利用API函数开发DELPHI程序三例 利用Hook技术实现键盘监控-Delphi资料 利用浏览窗口 DragDrop 任意文件-Delphi资料 利用未公开函数实现Shell操作监视-Delphi资料 妙用Delphi的标识号 判断Windows类型和版本-Delphi资料 判断一个程序是否dos版本:-Delphi资料 屏蔽系统按键-Delphi资料 1.在程序中用static final与用static或不加上这些标志的具体区别是什么? 2.工程建库 怎么样才能去掉字符串中的双引号呢? 关于在J2EE项目中客户端打印的问题,急!!!! SQL Server与Oracle的转换 一个VBA控制office问题 关于用纯asp代码实现文件上传的问题! JComboBox的下拉列表怎么让它显示出来? 除非我把那个控件拉的很难看它才能像ComboBox一样工作但是那样大小是原来的n倍 高分求救~~WIN98的问题 高分求救~~WIN98的问题 Grid中的數據源刷新問題?? 在c#中如何开辟一块指定的内存空间? 聊天室的隐藏框架怎样做啊,我把框架尺寸设成0了,鼠标还是不停的闪/ 出什么事情了? listView怎么加入打印功能? 如果你拽的话:50分全是你的啦。帮我看看这条sql语句错在那里? Excelsior JET Professional Edition 谁有这个版本啊,破解的??在线等待…… 我的程序编译通过了,为什么测试通不过??代码在下面,大家看看是关于数据库和哈希表的 如何用DELPHI制作卸载程序 为什么我在C++ Builder 中用cgi作webservice访问数据库出错? 关于dinstinct的问题(100分!) 怎样将GIF文件包含到资源文件及如何调用? 如何在程序中屏蔽掉系统热健:如 ctrl+alt+del, alt+tab等等 怎样在子线程的运行过程中获得主窗口的指针? 50分征解50分征解!!!!! 如何在listbox中显示多列,并加上标题(每一列都有自己的标题) 现有一DBF数据库,如何把它倒到SQL里? 没分了,仅此10分求日期的正则表达式,希望帮忙 PPT 文件变得好大 oracle8.1.5中transaction slot的问题 怎样在linux下设置有管理员权限的用户!在线等待!!!! 出学者界面实做---STEP 4 小小的堆栈问题 可不可以在一个视图中加入不同数据库的数据? 为什么我在C++ Builder 中用cgi作webservice访问数据库出错? 求JPAD PRO的破解 PPT 文件里插入Organization Chat 请教static问题 我要离开现在的公司了,去寻求新的发展...... 请教各位高人,一个循环定义问题 Win98下为什么拦截不到从另一线程发过来的自定义消息 public class myclass 与 class myclass 一样吗? dbgrid 中,titleclick事件,如何判断选中的是 哪个字段 呢? 很简单 ADOtable 不支持 FindKey, 请教: 应该如何解决记录定位? 火急请教个“重新验证组织单元”问题! 想做一个报表但设置DataEnvironment的连接失败,不知为何错? 请教!linux下将.h和.c文件编译成动态连接库!!! 你真的懂SQL语句的编写吗?快来,我给你分 重载与模板的问题 出租魏公村西口两居之一 不知哪有好一点的聊天室,各位大虾请推荐几个小弟几个!!!! jsp里面有类似于asp的response.end语法吗? 求教各位大虾,这样的数据库程序如何实现。急切中。。。。。 《晒晒我的鹿晗》作文500~600 我的爸爸是一个小老板 英文翻译是什么 遇到自然灾害怎么自救各种都要 种类尽可能多一些 简略 关于exo鹿晗的作文我是一名标准的鹿饭,想要写一篇关于鹿晗的作文,开始不知道怎么写,能给我一篇吗?字数600以上 《三字经》的读后感1000字左右吧 自然灾害发生是应该如何自我保护 当一个男孩(或女孩)只称呼你名字中的一个字时,说明什么呢?例如,只称呼其姓,不称呼其全名等大家说说自己的看法请大家积极参与回答 第一次真好 周素珊 选自 苏教版小学六年级下册语文练习与测试14课答案 三字经的读后感 第一次真好 周素珊?她有哪些故事? 有什么自然灾害,如何自救?100字 那一本读物上有关于鹿晗的文章? 把《劳动的开端》缩写成100字左右的短文 周素珊的《第一次真好》1.试简析下面语段的结构特点.第一次的感觉真奇妙.第一次去露营,第一次动手做饭,第一次坐火车,第一次坐飞机,第一次看见雪,第一次看到自己的作品用铅字印出来… 《三字经》读后感(作文) 把《劳动的开端》缩写成100字的文章文章是六年级语文上册的第19课!!!急需!!! 求一首歌!不知道是日本的还是英文的,是一个女人唱的,很经典的记得在MV里有海,景很美,听起来很慢,但很舒服的一首歌,记得在MV里有海,但海不是真海,是电脑效果,景很美,听起来很慢,但很舒服 我的中国梦诗歌?我是一位初中生,请帮我修改一下我的诗歌我是一株小草,在您甜美乳汁下萌芽,在您温暖阳光下茁壮.前进曙光熠熠生辉,青春之梦火热炽烈,您——祖国,是否发现,发现您广阔胸 如何把19课缩写成100字短文 动物是用什么方式自我保护?请分动物来回答 怎么样背课文,背英语文章又快又好记,还不容易忘. 一个男的叫女的名字的最后一个字并且加了“儿” 用100左右字缩写《劳动的开端》——急! 短文两篇(行道树)(第一次真好)分别用( ) 和( )的写法揭示主旨 求范文:《方仲永巧遇吕蒙》吕蒙遇到方仲永会对他说什么?会怎样劝他读书?(提示:自从孙权劝吕蒙读书后,吕蒙变得很聪明.方仲永天生聪明,但他不接受后天教育,最后变成了一个很普通的 怎样缩写100字的《劳动的开端》十分紧急,知道的说 故圣人耐以天下为一家,以中国为一人者,非意之也,必知其情,辟于其义,明与其礼,达于其患,然后能为之 当吕蒙遇到方仲永他们会说什么?300字左右 怎么记英语文章有没有更好的办法记英语文章.不要死记硬背的那种 故圣人耐以天下为一家.出自哪里? 苏教版四年级下册语文练习与测试单元练习五 面对自然灾害如何自护自救 例子 作文某某人面对灾害如何自护自救有全篇的很好 但有例子也行强调是自然灾害,自护自救 以共筑中国梦为题材的诗歌、文章,5分钟要可以读完,最好有视频. 有关于我的中国梦的诗歌800字左右 自然灾害的例子 我的中国梦的短诗最近举行一个主题是“我的中国梦”的书法比赛 我要参加 写一幅软笔书法作品,内容扣紧主题,20字左右 关于鹿晗的作文 求近年全球自然灾害事例求近年全球特大自然灾害的详细事例. 小张和小李两人分别从甲乙两地同时由西向东而行,小张骑摩托车从甲地出发,速度是45千米/时,小李骑自行车从乙地出发,速度是15千米/时,2小时后小张追上了小李.求甲乙两地的距离用方程,还 关于中国梦的诗歌 天灾自救事例 《吕蒙巧遇方仲永》这篇文章怎么写? 你爱鹿晗吗?爱鹿晗就留下你的理由!长的很萌,从不做作,做真实的自己,只会照顾别人,不会照顾自己的小傻瓜.我一直爱你,鹿晗♥ 求六年级课文鸡毛信缩写.400字左右, 三字经读后感,快急用!大概1000字左右吧!12.16要交! 写作文 鹿晗关于鹿晗的作文题目叫《风雨中绽放》600字以上 六年级上册课文有哪些,全部 吕蒙巧遇方仲永kkkkkkkkkkkkkkkkkkkkkkk 鹿晗英文怎么写 风景写生中如何画天空、云彩? 三字经 读后感用三字经中的话 来写一篇400字的文章 提纲就行了复制就免了! 以my hero.为题写一篇关于鹿晗的英语文章,描写一些外貌以及言语, 对于自然灾害的自救措施? 假如方仲永巧遇吕蒙后的对话 求一篇有关习惯的作文,600字左右,不用从太大的角度,谈下细节就可以了最好不要用第一人称“我”的文章,就是什么情况下都可以用的那种 从.天空.云朵.湖面.小船.快乐.歌唱.写一段.时间地点人物事情不少50字 求写人的作文写鹿晗的,大约五六百字.要写人的关于鹿晗的,不要有什么爱不爱的,毕竟是学生交给老师不好. 刘伯承的夫人是谁 刘伯承有几个妻子 王亚平太空授课是什么时间啊?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘