如何利用OLEObject对象在PowerBuilder中操作复杂Excel报表文件

 我来答
huanglenzhi
推荐于2016-04-11 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517184
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  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时不弹出对话提示,直接自动保存。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式