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

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

用VB开发多通道仪表数据采集程序 用VB实现关闭所有数据库对象 用VB实现类电子表格的数据录入 VB用代码创建数据库,表,字段 VB用类来编写数据库程序 优化OLE的调用频率-VB资料 语言选择引起的查询错误 -VB资料 远程数据库的访问-VB资料 运用ADO进行数据库表数据互导 -VB资料 在 VB5.0中编辑数据库和电子表格 在Access 2000中用ADO-VB资料 在Access数据库中实现密码管理的另一种方式 -VB资料 在VB6.0中使ACCESS数据库在网络使用中保持同步 在VB中更改SQL Server数据库结构 在VB中兼容非ACCESS数据库的技巧 在VB中引用dbf及索引文件 在VB中运行Microsoft Access报表的好方法 在VB中直接用ODBC API访问数据库 在数据库应用中, 经常要动态生成 Select 语句,典型的情况:-VB资料 在运行时修改DataEnvironment的连接字符串-VB资料 在抓取資料庫之資料前先計算資料總筆數 -VB资料 增加 MsFlexGrid 的编辑功能-VB资料 真正删除数据库的记录 -VB资料 用VB制作屏幕保护程序 VB多媒体程序设计 VB设计动画时钟 VB游戏写作技巧(1)秀图篇 VB游戏写作技巧(2)网络篇 VB中播放WAV文件 VB中播放三维动画编程一例 Visual Basic 5.0多媒体创作技巧 昨晚给一个聊得很投机得MM打电话,她不接! delphi7与delphi5的差别? 《雨季会再来》 SQL SERVER的同步问题 怎样在DLL中添加一个不可见部件??? 请帮忙给个思路(分再加) 关于WIN2K管理员密码 查找时,随便符合一个字段中的条件,是否可以用or ? 关于读取oracle中clob字段的中文信息的问题 如何让IE6不显示保存图片按钮? 時間比較問題 如何固定DBGridEh的列? 如何在vb.net里面使用资源文件 关于WIN2K管理员密码 在tomcat服务器上发布soap的问题,高分相赠 JSP在websphere4.0中的应用问题! 急,关于COM调用的问题 请问各位C#有DBChart控件吗????????? select的问题 有没有好一些的MP3播放器推荐 关于声音的问题…………等…… xml是不是马上必学的?????? 呜呼!我巍巍中华,铿锵汉字,终将进博物馆了吗? 创建虚拟目录,在另一计算机上的共享位置? 用javascript怎样remove掉数组中的一个元素???急 存储过程问题 java基础类 网络错误718,是什么问题呢?分不够可以再给,急呀!! 怎样加大数据库的连接时间,因为通过远程连接,所以想加大连接时间 紧急求救? 这样的弹性页面能实现吗? 100分求"公司网络管理办法" 寻开发公司 请帮我,关于从WIN2000到WIN98的问题(在线等) 关于firework的问题?急急急!!!!!!!!!!!! 用VC.net应该怎么调试.cpp文件 老有人反复发一些老帖子,早被别人转了几百遍了,烦啊! 展示 怎样删除页面布局表格 或 页面布局单元 各位大侠,外挂里的自动捡物是怎么实现的? 如何在运行中删除动态创建的 POPUPMENU 的某个菜单项呢? 安装包怎么做? 怎样将mysql数据库里某个字段的所有值绑定到form的<select>选项里。 我的com+组件两台机器间不能执行方法 怎样获得InputBox、InputQuery的值? 我用的光盘版的maya5.0,serial number不对啊?谁有可以用的啊? 请教:MPP文档是什么概念啊? 哪里有VF做的工资管理系统下载 怎样在一个中英文混合的字符串中添加回车键后而不出乱字符 救命啊!!!!! 关于ocx的问题 You're a dead dog stupid kin中文什么意思 急配电子元件!电阻-N-公司里传真/扫描/复印一体机坏了,原因是应该用100V电源的直接插到了200V的电源插座上,东西是日本进口的.请电子行业朋友们告诉我哪里可以买到以下电子元件:电 我国有什么海洋的科研成果? 有什么部件能够将力矩电机的转动角限制住,不让其做圆周运动 会计中,如何更容易理解权责发生制与收付实现制的区别? 有关曝的成语,曝的意思必须是“晒” 马克思 关于社会主义终将取代资本主义的说法是出自哪本书? 三角形ABC的内切圆与三边的切点构成三角形EDF则三角形ABC的内心是EDF的外心,为什么 “肥田出瘪稻”请问在经济学中是什么现象啊? 按照马克思史学观,社会主义优于资本主义,并会取代资本主义,哪为何世界上就只剩那几个社会主义国家了?还有个不三不四的中国.(1、有人说是和平演变,那为什么是劣等将优等演变;2、有 任意三角形ABC 的三个角的三等分线 交出的三角形 EFD 一定是等边三角形 新的生命从何时开始 让物体做竖直面圆周运动的最小速度怎么求? 青蛙属于什么科? 蜘可以组哪些词? 马克思曾说过终有一天“社会主义将取代资本主义”是真的吗?马克思没说过但预言过 青蛙属于哪个科? 蜘蛛的蜘可以组什么词 你对一道问题的解答我有点看不懂,我是初学者,麻烦再讲仔细点好吗?【1.8g的NH4+离子中含有的电子数为NA】NH4+的电子数是7+4-1=10个,n=1.8/18=0.1mol,所以电子数是NA.是正确的.为什么电子数是NA呢 若三角形ABC的三边长度之比为3比5比7,与它相似的三角形EFD最长边长为21,则其余两边之和为多少, PS中旋转并复制方式? 解析几何题 在平面直角坐标系中,△ABC的两个顶点A、B的坐标分别是(-1,0)、(1,0),点G是△ABC的重心,y轴上一点M满足GM//AB,且│MC│=│MB│求:△ABC的顶点C的轨迹E的方程 青蛙所属科类 在PS中怎样才能完成旋转复制 写出几个带有“倦”字的词语,并把它们恰当地填写在下面的段落中.徐利奥由于夜里偷偷地帮着父亲写签条,4、 写出几个带有“倦”字的词语,并把它们恰当地填写在下面的段落中.徐利奥由于 【有图】求助2个简单的圆周运动问题1使小球在最高点释放,多大的速度能让小球紧贴圆面滑下?因为最低点向心加速度为0,所以我觉得无论速度多大都会在下降过程中抛出.2假设小球在图示位 在PS里要以中心旋转复制怎么做? 叙利奥夜里帮父亲抄写很多签条,父亲一点儿没有?填有“察”的词在?处 青蛙是什么发育?变态还是不变态? 解签,求事业!一锥卓地要求泉,努力求之得最难;无意偶然遇知己,相逢携手上青天.欲望心事 西方可求曰:不如英动 立地可谋 住房公积金贷款是如何计算可贷额度? 腰为10,底长为6的等腰三角形的内切圆在两腰上的切点间的距离为?要解题思路和过程~~~ 第五签,一锥卓地要求泉,努力求之得最难,无意偶然遇知己,相逢携手上青天,解欲望心事,西方可求 住房公积金贷款是怎样计算的 等腰三角形ABC的内切圆,切点分别为D E F,已知三角形ABC的两边长是4和6,求FC 一锥卓地要求泉,努力求之得最难.无意偶然遇知己,相遇携手上青天. 抵抗的近义词是什么 证明 等腰三角形的内切圆与底边的切点是底边的中点 凌晨3点,看到悬吊着的蜘蛛在头上,过了会又爬到身上,这是什么预兆啊?.. 抵挡的近义词是什么? 谁能给总结下 圆周运动,匀速圆周运动等运动的不同点我要考试了,匀速圆周运动这一部分还分不清, 夸同学作文好用什么四字词语 成语青梅竹马的由来 申请住房公积金贷款应具备什么条件 《过草地》张爱萍 这首诗的意思这首诗是有关于红军长征的诗,有谁知道这首诗的意思吗?我有急用! 抵挡的近义词 申请住房公积金贷款需要具备哪些条件 如何面对困难的诗歌《过草地》 抵挡和接到的近义词是什么? 怎么画旋转图形 底力9是啥意思?弹幕里的 抵抗、伤害、饶恕的近义词 公积金贷款的条件是什么? 海洋科研属于工业么 Unless you are dead虾米意思?RT 住房公积金贷款条件是什么? 力竭斯底是什么意思啊? 收音机拉线滑轮打滑 住房公积金贷款的条件我现在已经上缴3个月的住房公积金,因急需买房,已经向公司申请补缴满12个月的住房公积金,也就是补缴了9个月的,我想问一下这算不算连续正常缴纳满12个月?如果不算 那个底力究竟是什么公式计算的呀?激励哥,底力8级,气力120,满血时轰杂兵5000+,40%HP发动了底力,没有发动异性生命体(气力130).同一招,同一武器,同一杂兵,必定会心,12000+.有没有高手告诉怎么 黎巴嫩支持召开叙利亚问题第二次日内瓦黎巴嫩支持召开叙利亚问题第二次日内瓦杭州火车东站地裂女子被卡 建设方称系杭州10岁女童遭“淫魔”猥亵 家长怒广西岑溪炮竹厂爆炸 已致7死19伤海军三大舰队西太平洋演习落幕 今后将北京局地达严重污染程度 “蓝天”只能蒙古国高校新增汉语教学点叙问题联合特使称日内瓦会议有望于数周刘奇葆会见朝鲜劳动新闻代表团以色列轰炸加沙致3人死亡印度烟花厂爆炸至少8人死亡浙江金华婺城区发生一起安全事故 致2浙江一工作人员被爆不务正业 上班玩游中国留学生勇救日本落水儿童获驻日使馆河南“死刑保证书案”民事上诉被驳回 专家PMI保持升势 经济稳定增长态势日媒:中国调查船驶入钓鱼岛附近“专属日本举行国内首次大规模“夺岛”演习日本举行国内首次大规模“夺岛”演习英国10月份制造业PMI回落至56.江西小伙摆出最萌候车凳计量学子悼念邵逸夫平均薪水最高行业G字头车票14:00起售 深圳站普通击毙烈犬2013浙江福彩销量124.5 亿拜拜,拜纳姆开发区行政服务中心年终盘点宏宝花园3楼以上几天没水用今夜降温朴槿惠下班后报告不离手闲时逗逗狗乘“海娜号”开启浪漫海洋之旅传奇百年 行善一生是科学的专业活华裔坐宝马领救济男子狂奔欲逃票 售票员大呼抢劫今年将比去年冷3℃八成租户没见过灭火器神勇“雪龙”号一举破冰而出一周教育观察微互动
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘