...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时不弹出对话提示,直接自动保存。