问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...OLEObject对象在PowerBuilder中操作复杂Excel报表文件

发布网友 发布时间:2024-01-23 07:23

我来回答

1个回答

热心网友 时间:2024-04-01 05:20

1. 引言 在很多情况下,软件开发人员设计数据库应用系统时,免不了要求系统自动且快速生成大量相关报表,通常采用的技术是使用AutoCad软件,将多个表格批量生成到一个CAD图形文件中(即.DWG文件),再通过打印机输出。其技术优点在于能够批量生成大量报表,但对于少量报表输出的情形,缺乏灵活方便性,而且操作步骤比较繁琐,

  因此需要寻求一种更加适合少量报表生成并输出情况的可行方法。

  2. 实现思路

  Microsoft Office中的Excel报表生成组件就是专门为处理各类报表的专用工具,使用起来非常灵活方便,并且具有数据运算、汇总和报表格式设计等丰富的功能,因此,若能在高级编程语言中把Excel当作对象来调用其现成的功能,利用Excel中已经调试好的代码来进行运算,那么就省去了其他程序员编写和调试复杂代码的麻烦过程,因此可以把Excel视为对象服务器,在PowerBuilder应用程序中通过调用其各中方法来进行表格的生成、计算和打印等功能。则可实现编程工具中操作复杂Excel报表文件的目的。

  3. 在PowerBuilder编程语言中生成Excel报表

  PowerBuider是Sybase公司提供的一种数据库应用系统的前端快速开发工具,诚信http://www.scgmoutdoor.com/cxzxyl使用其数据窗口对象可以很快捷轻松的访问数据库中各种数据。同时,PowerBuilder开发工具还支持与多种数据库进行访问连接,如目前流行的Oracle、Informian、Microsoft SQL Server等企业级数据库都可建立连接,处理各种有关报表管理事务。下面具体说明如何在PowerBuilder开发语言环境中实现Excel报表生成的主要步骤。

  (1)声明OLE对象,例如:OLEOBJECT OLE_Report_Excel;

  (2)创建OLE对象,例如:OLE_Report_Excel=Create OLEOBJECT;

  (3)使用PowerBuilder中的Connect To NewOBJECT()函数来创建一个新的OLE对象,并且连接此对象,例如:OLE_Report_Excel. Connect To NewObject (‘EXCEL.Application’)。如果该函数的调用返回值为-0,说明连接成功,否则就表示调用失败。

  经上述三步即可完成操作报表前的准备工作,下面简要介绍后续操作实现过程。

  4. 生成报表要素

  PowerBuilder打开Excel文件时,可以将其设置成后台打开模式进行操作,即通过配置其Visible属性的逻辑值(True或False)来实现,示例语句如下:

  OLE_Report_Excel.Visible=False

  OLE_Report_Excel.Application.Workbooks.Open (\"D:Report-Example.XLS\")

  然后对该表格的数据-

  列表中的单元格访问时,必须要通过Application对象的属性对象ActiveCell进行操作,例如对选定单元格赋值时,其操作可分为步骤来实现:

  (1)选中数据单元格:调用Range对象的Select()方法,Range对象的作用可以选择一个或多个目标数据单元,需要配置起始行数、列数和截至行数、列数,若选择一个单元格,只需配置起始参数。示例代码如下:

  OLE_Report_Excel.Range(\"C1\").Select()

  (2)给选中数据单元赋值:选中之后,对ActiveCell对象的Formula(R1C1)属性赋值即可完成。示例代码如下:

  OLE_Report_Excel.ActiveCell.FormulaR1C1=sle_2.Text //Sle_2为静态文本框控件,将其数值付给

  (3)调用SUM()方法可以实现对选定数据单元格的求和运算,也即先调用SELECT()方法制定求和单元格的范围,指定结果单元格的位置,将求和结果赋值,示例代码如下: OLE_Report_Excel.Range(“A1:C1”).SELECT()

  OLE_Report_Excel.Range(“E1”).Activate()

  OLE_Report_Excel.ActiveCell.FormulaR1C1=‘=SUM(C[5]:C[2])’

  ??

  (4)对单元格其他属性其的设置,例如要求把某单元格字体设置为粗体,先选中后设置,示例代码如下:

  OLE_Report_Excel.Range(“A1:E1”).SELECT()

  OLE_Report_Excel.Selection.Font.BOLD=TRUE

  ??

  (5)报表打印时,首先必须指定打印的内容,再调用Application对象的PrintOut(),例如,打印输出WorkSheet的Sheet1内容时,示例代码如下:

  OLE_Report_Excel.Worksheets(\"SHEET1\").Activate()

  OLE_Report_Excel.ActiveSheet.PrintOut()

  ??

  (6)结束时关闭Excel文件,同时释放内存资源,同时向操作者发出弹出提示,可以通过对Application对象的DisplayAlerts属性值进行相应的配置,即可完成。此时参数的设置有2个选择,值为TRUE时表示关闭Excel时提出是否保存选择对话;值为FALSE时不弹出对话提示,直接自动保存。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑显示器优泒,AOC,飞利浦哪个显示色彩较好 想买超薄的显示器,优派好还是飞利浦好? 优派和飞利浦哪一个更好用 我和我女友热恋两个月了,但是她总是嫌弃我。而且她专插本考上了本科... ...岁我喜欢一个女孩但不知道改制面和他说谁能帮帮我啊求求大家了 我... 我该怎么追她 谁能帮帮我 ...有能理解我的话的么,谁能帮我分析下我和他的现状, 头大,头发少,头顶尖适合发型? 大脸头发少的适合什么发型 头大脸圆,头发比较少柔软,剪什么发型会好看 一年内怎么改第二次 ...laserjet 6 l有两个进纸口,另一个进纸口是做什么的?如图 一家人新年祝福语 王源欧阳娜娜同框怎么回事?王源欧阳娜娜合影照片两人为什么又同框?_百度... 宁安如梦女主到底喜欢谁 筑锦堂瓷器属于几线品牌 张子枫为欧阳娜娜打歌,照片好敷衍,欧阳娜娜懒得回应,你怎么看?_百度知 ... 酒店房间斜顶装烟感有要求吗 市场竞争战略有哪些 路人忘记开滤镜,生图下欧阳娜娜“粗腰饼脸”,这颜值让人失恋了吗?_百... 我男朋友乘我睡着了,偷走我八百五十块钱,可以报警么 柿子___,___填形容词 锦堂发记是官窑吗 书锦堂款瓷器是什么年代 诺贝尔得主的英文简介 把手机放在灯光下烤能行吗? 卡板状态异常怎么解决 广东这边做得比较好的真空镀膜品牌 ...单位里面有上百个橡皮印章,如何才能更好的收纳.并快速找出我想要的印... 郑州新郑鞭炮在哪里进 抖音里面为什么没有关注的人了呢? 苹果手机网站提示不安全怎么设置啊? 家人新年祝福语 如果银行卡解除了财付通微信还可以支付吗如果再次绑定新的会... 小米电视无信号怎么回事? 《无极 》是不是生死攸关时刻呢? “费”作语气词,表示疼.这属不属于晋语 【车主点评:家用SUV选三菱欧蓝德不会错】 发扬广大哪个字错了? 机动车占用公交车道扣分吗? 国稔民稷集团有限公司电话是多少? 古龙峡在哪个市 网易云云推歌没有效果 Linux文件类型 阔扬科技集团有限公司电话是多少? 学生票可不可以买中间站? 查字典的正确方法是什么? 沙河市白塔镇到武安市西马项有多远 百万骑士团换什么名字了 一年内怎么改第二次