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

基于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

《时代》评选年度十大科技产品,iPhone 5居首 Loopjoy:让开发者在移动游戏里贩售真货 iPhone 5S真机照片泄露 明年初上市 Beeline:从“蓝精灵村庄”到“捉鬼敢死队” Windows Server 2012域服务的六大改进 如何编写出优美的JavaScript代码? Unity CEO:不会因赌博游戏谋取金钱利益 云领域:且看亚马逊、Rackspace、微软及谷歌四国争霸 十一位EMC高管读2013技术趋势 你准备好了吗? Yahoo:拥抱Hadoop和HTML5 苹果聘女黑客为系统安全员 曾让Vista推迟发布 移动游戏定价之谜:0.99美金行不通 9.99美金和19.99美金才是王道 2012末日年:《时代》评选年度十大App 使用HTML5 Web存储实现离线工作 紧跟亚马逊、谷歌步伐 微软下调Azure云服务价格 云计算一周热点回顾:Hadoop专家分享大数据技术工具与最佳实践 Python之父Guido Van Rossum离开谷歌 一月加盟Dropbox 图灵奖获得者Butler Lanpson:计算机在做些什么 华为高级技术经理Anoop Sam John:HBase的二级索引 秦令今:技术是竞争的核心,形成自己的特色! 兰旭:拒绝同质化,做自己的真材实料! Cloud Foundry直面PaaS对手 初具商用能力 IndieBros访谈:探寻《2+18+200万》背后的故事 移动周报:生存还是毁灭 HTML5未来路在何方? 开发者的新机遇:微软生态系统打开开源大门 阻碍创新:谷歌、Facebook请求驳回抽象专利概念 Apple专利战分析:战火不停 创新不止 史上最牛独立开发者:花20美元狂赚100万美元 Twitter VS. Instagram:照片分享大战爆发 第二届“龙芯杯”中国开源软件设计大赛圆满落幕 TUP Masters第六期实录:Jeffrey Richter讲解Win8应用开发与.NET4.5 如何用BUTTON按钮,将一个窗体文件关闭? 非常简单的付值问题.火急,再线等待,马上送份 调用RasDia();第一次拨号成功断线后再拨就返回错误字符终止连接为何代码如下: 怎样能编写用于用ie注册邮箱、论坛账号时自动填表的软件 资源文件的问题! 一个挑战斑竹的问题!!50分 如何把压缩文件(*.rar或则*.zip)和word文档存到Acess数据库啊??? 如何可以知道访问我的网站的用户来自哪里? 关于SQL的问题 这对话框我如何去掉 asp.net 能否运行在Solaris系统下,参与者有分 c#请求援助 int a 除以 int b 取他们的余数用C#该怎么写啊?谢谢 求救!显示后台数据,在线等待!等…… jsp中的数据库问题,求教!!急 刚学数据库,弱智问题,高分赠送! 这个查询怎么写? 关于表生成文本文件遇到的事情,急 InstallShield Professional Standard Edition 6.30 英文版的下载(高分:200) 寻一男友:发展方向——>老公 我用serv-u,客户端访问为什么没有用户登陆窗口啊? 脚本验证datetime要准确点的 请问,想做出象Protel(Tango)作图效果的程序,如何下手呢? win API函数的区别(win xp 和win 2000)高难度!! 那儿有winsock.pbl 进入系统的速度变慢????在线等待 当 AllowPaging 设置为真并且选定的数据源不实现 ICollection 时,AllowCustomPaging 必须为真,并且 ID 为 DataGrid1 的 Data 怎么提高搜索速度? 如何printScreen并获得这个图片? 如何用SQL格式化一个IP地址?我得到的IP地址是一串数字,想显示为255.255.255.255那样的样子。 为什么在客户端出现Interface not support的错误? help,关于文本显示! SOS 急急急 请教几个概念? 如何打开一个用winexec打不开的可执行文件。 进入系统的速度变慢????在线等待 请大家谈谈目前比较经典软件,共享的,免费的,大公司的,个人的,国内的,国外的,不分行业等等,只要是经典都可以,请大家畅谈! 欢迎踊跃讨论!如何使得delphi编的exe或dll最小! 基于对话框的打印,打印一块区域!! 一个简单的链问题是输入一个结点请高手在助我 急问!在access中什么字段类型能容纳很多文本?就类似sqlserver中的text!!! 最近有个工程需要用串口(用MSComm控件)来接收ASCII字符信息,怎么用啊!?谢谢! VC++6.0中如何通过Socket从Client端向Server端传送文件? WinCE.NET 系统上如何拷屏 请问如何选择录音的输入设备? 引用“&”和union有没有区别啊? 本版的“跳楼大放送,今年高程、系分模拟试题及备考指南、考前培训笔记、心得,保证通过率。 (romantic999 ) ”你们打的开吗?我打不开 哪里有 车辆管理系统 的资料 请教:(在程序中)如何判断我的系统是否安装SQL Server数据库。如果安装,如何获取SQL Server的版本信息?谢谢! 小问题 请教 将RS232输入的信息转成键盘输入??? 家里养的鸡病了不知道是什么疾病家里养的鸡病了不知道是什么病,疑似支气管炎喂了几种药也不管用.已经死掉一半了.请大家看看是什么病!怎么治?也有的会表现出不同症状的例如常见病鸡 确切地说,蟑螂是活化石吗?请从科学角度回答 某林场2004年种的香樟树比松树多2000棵,根据图的统计图,可知柑橘树种了 多少棵. 小作者和地球爷爷谈了哪几方面的内容?这些内容表达了作者怎样的感情这篇阅读是《给地球爷爷的一封信》 蟑螂既然是“活化石”,为什么不保护呢?为什么呢? 一棵树各年的成长情况用什么统计图是什么统计图 爷爷很聪明,表达了对爷爷怎样的思想感情 甲乙两名打字员合作打一份350页的书稿,14小时完成,甲打字员毎小时打12页,乙每小时 下面是林场育苗基地树苗情况统计图.⑴柳树有2500棵,这些树苗的总数是多少棵?杨树占33% 柳树占25% 松树占15% 柏树占10% 槐树占17%⑵松树和柏树分别有多少棵?⑶杨树比槐树多百分之几? 给地球爷爷的一封信表达了作者怎样的感情 发现的作文怎么写最好是去乡村的发现 求有关于《我的初一生活》的作文,最好是自己写的 有道初二的数学题不会呀!急死了,老哥老姐们帮帮小弟吧!过程很重要,必须写!一般室外放映的电影胶片上,每一个图片的规格为3.2cm×2.4cm,放映银幕的规格为4m×3m.若影机的光源距胶片20cm,问:银 打一份书稿,甲单独要12小时完工.乙单独要20小时完工.现在甲乙合作用了17小时,中途甲休息了2小时.乙休息了几小时? 一个80人的旅游团去保定白洋淀游玩,请你设计一个租船方案.租船标准:8人快艇 240元4人渔船 100元30人观赏船 450元 老哥老姐们,过程一定要详尽!运用“三角形内角和定理”证明“四边形的内角和等于360°'.根据所给命题做出相关图形,写出已知,求证并完成证明! 手被水或高温的东西烫到怎么办?我好不小心~老是被水烫到!什么办法才能有效而快速退热呢? 甲乙两人同时从AB两地相向而行,在离A地300米处第一次相遇,相遇后,两人继续走,走到对方的出发点后立即返回,离B地500米处,两人再次相遇,问第三次相遇离A地多远?(上面写不下了,写在下面.) 一道非常有挑战性的数学题,老哥老姐们帮帮小弟吧!要求:用分式方程,我市某县为创建省文明卫生城市,计划对城市道路两旁的人行道进行改造,经调查可知,若该工程由甲工程队单独来做恰好 宇宙飞船中如何加热水和食物请具体给出物理原理,这个问题好象跟对流有关的! 辩论赛四辩总结陈词,规划未来更重要. 试说明无论x、y为何值,4x^ -12x+9y^+30y+35 的值恒为正 ^平方的意思 今年7月我即将去某外企报到,但是六级成绩单找不到了,不知道这对我的入职报到有没有影响?若是去补办个成绩证明也要等到十月份以后才能拿到了. 沉默非金辩论赛的总结词怎么说啊?我是四辩,近期需要啊! 怎么参加新概念作文比赛?今年的开始了吗? 现有甲、乙两家瓷器店,茶杯每只价格5元现有甲、乙两家瓷器店,茶壶杯每只价格5元,茶壶每只价格20元,已知甲店制定的优惠方案是买一只茶壶送一只茶杯,乙店按总价的92%付款,校办公室需购茶 小学老师培养应侧重与全科化还是专业化 辩论赛 四辩小结 急求 明天就要比赛了啊T我们是正方,说的是专业化,急求高手指点一二啊.不知道该怎么写四辩的小结啊,还有,我们是正方 如果有很 离别的滋味作文怎么写离别的滋味作文怎么写 现有甲、乙两家商店出售茶瓶和茶杯,茶瓶每只价格为20元,茶杯每只5元,已知甲店制定的优惠方法是买一只茶瓶送一只茶杯,乙店按总价的92%付款,某单位办公室需购茶瓶4只,茶杯若干只(不少于 【我的初一生活】作文怎么写.买噶,我要自己写早就写完了,关键是不会写 我品尝到了离别的滋味作文,help! 第十届新概念作文大赛 初赛入围名单 什么时候公布?怎么查询? 医生通过听听诊器了解病人心肺情况工作情况,这个例子说明声音具有_________的功能? 感悟古人的离别作文老师叫我们写 现有甲、乙两家商店出售茶壶和茶杯,茶壶每只价格为20元,茶杯每只5元.已知甲店制定的优惠方法是买一只茶壶送一只茶杯;乙店按总价的92%付款.某单位办公室需购茶壶4只,茶杯x只(不少 医生通过听听诊器了解病人心肺情况工作情况,这个例子说明声音能医生通过听听诊器了解病人心肺情况工作情况,这个例子说明声音能_________? 【艺考】 表演台词,播音自备稿件,适用的文章.专业的进.表演的台词,最好是第一人称;播音自备稿件最好要慷慨激昂的,适合男生的,例如【少年中国】【沁园春.雪】一类的.我艺考用, 第十二届新概念作文大赛初赛入围名单怎么还不出来?今天都已经1月2号了而且萌芽的的官网,怎么成了萌芽读者圈,哪位亲能通知我在名单出来的时候. 人民公园100人以上的团体门票是按原价的五五折优惠的.五年级160人去公园游玩,买门票一共花去528元.每张门票多少元 who is your mother 爸爸比我大28岁,四年后爸爸的年龄是我的3倍,今年我和爸爸分别是多少岁 人民公园的杜鹃花盆数是长春公园的4倍,如果从人民公园搬出188盆杜鹃花放入长春公园则人民公园的杜鹃花盆就比长春公园少25盆,两个公园原来各有杜鹃花多少盆. 商场决定将某种商品按照原价的80%卖出,这样所得利润就只有原计划的40%.已知这种商品的进价是每个4元,原 求一篇叙事性散文尽量多写一些民族风格.像八下语文第四单元课文那样, 强强8岁时他父亲32岁,当父亲的年龄是强强的2倍时,父亲多少岁?本人文科毕业,实在不知道怎样给出一个三年纪孩子能看懂的答案, 商店决定将某种商品按定价的八折卖出,这样所得利润就只有原来的40%.已知这种商品的进价是每个5元,原计划可获利润800元,那么这种商品共有()个. who is your mother _____over therea.talking tob.talkingc.talk tod.talk y=根号下sinx-cosx的值域 商场决定将某种商品按照原价的80%售出,这样所获的利润只有原计划的40%.已知这种商品的进价是每个4元,原计划可获利600元,那么这种商品有多少个? 急~小学六年级,最好是算式,算式的 我要1篇《生活处处有语文》的600字以上的作文!还有初一上学期英语练习册【蓝色的那个,陕西人民教育出版的】4单元的答案!【17,18 页】 甲,乙两人分别从A,B两地同时出发相向而行,经过5小时相遇,相遇后两人都以原来的速度继续前进,又经过3小时到达B地,这时乙距离A地还有160千米,求A,B两地的距离.不允许用二元一次,要用一元一 用英语写:每个星期日我去人民公园,在公园里我经常看到这样一些场景:一些男孩子在做游戏几个女孩子在放风筝,一些老人在跑步,有一些孩子在画画,有人在唱歌,有人在钓鱼,我常常带着我 寻人写一篇情侣离别作文故意气气老师,让他嚣张! 500左右,多了不限! 强强两岁时,他父亲32岁.强强的年龄是父亲年龄的五分之三哪年去世,父亲活了多少年 下面流出黄色的液体是怎么回事呢? 说明文的结构特点 有什么? “读者统计表”表示管理员的劳动强度,而“读书效果统计表”表示管理员的( 猫头鹰怎么画 蟑螂也是活化石? 跪求辩论赛 知识和经验哪个更重要? 我是4辩手 我们是反方 经验比知识重要,谢谢辩论高手了 国家卫计委发文:6个月以下婴幼儿不推11月的第一个周末有秋日也有桂花雨 “杭马”周日开跑西湖边交通管制 流动浙江百万元奖励一线杰出职工 每人获奖加拿大首设“比特币”ATM机“免费”医疗让俄罗斯进退两难孟建柱向上合组织通报10·28恐怖事美空管局解除禁令 飞行全程可使用电子美国也要守“村规民约”简化赴英签证手续今日实施专家:72小时绝对隔离吸烟让你变丑:双胞胎脸部皮肤对比作证俄罗斯8名高官因瞒报收入被罢免普京击败奥巴马夺魁每年730万少女当妈叙利亚按期销毁化武设施(图)土叙战机再次相会教皇被爆长期遭美监听 意大利梵蒂冈 高失业率威胁欧洲健康奥巴马豪华座驾“野兽”细节曝光纽约规定21岁以下禁买烟南京鼓楼:新思想新思路 四级代表献计新三板与战略新兴板竞争力分析!10月19日省环保厅 卫星遥感监测和预防感冒坚持四方法周立波说:当今医院与强盗的区别,太现“河南钻地龙”首次“钻入”中东保险助力,国产装备撬开大市场91家公司中期业绩超预期 净利润增加7万年薪招不到火化工移动时代,你还需要域名吗?这些公车国庆节干啥去了?调整藏品结构是最佳应对方案为人民抒写 为时代放歌易欢欢:依托互联网的共享经济形态正在我不是打酱油的帮你记录一切名言:Quotebook“暖小8”很积极很给力中方坚决反对 日本政要参拜靖国神社中国未来10年的4个创富大势孕期饮食不当易致婴儿湿疹红包大战 微信为何封了支付宝却纵容新
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘