PowerBuilder中的动态报表技术的应用

2023-03-03

管理信息系统开发中, 报表设计是开发者要解决的一个必然模块。很多开发工具都提供了各自的报表设计控件或组件, 但却都有一定的局限性。PowerBuilder是Sybase公司推出的一个专业数据库应用系统开发的可视化开发工具。由于它功能强大且编程简便, 所以很多程序开发人员都在使用。但是它自身的报表功能却不是很强。数据窗口是PowerBuilder独有的、最重要和最精彩的对象;也是PowerBuilder开发人员制作报表的对象之一, 利用它可以制作出一定格式的报表。但其制作复杂统计报表的功能还是不强, 难以满足中国式报表的要求, 在打印输出时为了打印出格式特殊的统计报表就需要专门编写相应的程序来实现, 而且需要反复调整才能输出较好的打印效果。还有不足是显示风格为网格 (Grid) 的数据窗口, 打印时在数据行上会出现双横线, 操作Header带上文本框也会受到很大的限制;表现风格不是网格的数据窗口, 不能方便的动态改变字段显示栏的宽度, 如果报表的数据项很多, 且数据值的位数较多时, 就可能出现显示不完全的情况。导致对于比较复杂的报表我们则只有选择其它途径来实现。

Excel是一个电子数据表格, 可以完成复杂的中国式报表的要求, 但它从数据库中提取数据的功能较弱。因此, 在实际应用中可以将PowerBuilder与EXCEL结合起来, 发挥各自的特长, 即利用PowerBuilder强大的数据库处理功能生成不同的数据, 利用Excel灵活的表格设计功能来制作不同的数据报表两者结合, 可制作非常完美的统计报表

1 PowerBuilder控制Excel对象

1.1 Excel对象的创建

在PowerBuilder中控制Excel可以利用OLE对象, OLE是一种Windows程序之间可以共享数据与功能的技术, 利用OLE可以实现PowerBuilder数据窗口与Excel之间进行通信。首先需要创建一个与控件独立的OLE对象, 该对象用作远程OLE对象的代理与服务器应用程序连接起来, 由应用程序执行对该对象操作的函数调用和属性设置, 使OLE对象发生变化。在PowerBuilder中要创建这样的对象可以声明一个OLEObject对象类型变量, 然后与Excel的O L E接口连接起来, 或直接利用E x c e l.Aplication对象直接创建一个与Excel相关联的OLEObject对象实例, 并使该Excel应用程序的OLE对象实例可见。方法一具体命令如下:

OLEObject excelobject

excelobject=CREATE OLEObject

integer ret

MessageBox (“连接错误”, “excel无法完成连接!”)

方法二具体命令如下:

1.2 Excel对象的控制

创建好E x c e l对象实例后, 就可以将PowerBuilder数据窗口中的数据, 根据具体报表的格式要求填充到Excel表格单元格中。同时根据要求完成相应报表格式的控制。对Excel对象可能进行以下格式控制。

1.2.1 添加新Excel工作簿

1.2.2 打开已存在的工作簿

excelobject.WorkBooks.Open (’excel文件所在的位置’) ;

1.2.3 设置Excel标题栏

excelobject.Caption=”excel标题”

1.2.4 添加新Excel工作表

1.2.5 设置活动工作表

excelobject.WorkSheets[2].Activate;或excelobject.WorksSheets[’Sheet2’]。Activate;//设置第2张表为活动工作表

1.2.6 放入单元格数据

excelobject.Cells[1, 4].Value:=’第一行第四列数据’.

1.2.7 单元格的合并

excelobject.ActiveShee.t Range[’A1:D5’].merge;//将A1:D5单元格进行合并。

1.2.8 单元格边框线条设置

excelobject.ActiveShee.t Range[’A1:D5’].Borders[1].Weight=4;//指定范围A1:D5内各单元格左边框线宽度为粗线, 其中Borders[i], i取值含义为:1—左、2—右、3—顶、4—底、5—斜线 () 、6—斜线 (/) ;

1.2.1 0 对单元格的列宽度以字符个数为单位设置

excelobject.ActiveShee.t Columns[1].Column.Width=5//设置以第一列宽为5个字符。

1.2.1 1 对单元格的高度以磅 (1磅=0.035cm) 为单位设置

excelobject.ActiveShee.t Rows[1].RowHeight=1/0.035可以设置第一行行高为1cm。

1.2.1 2 对指定单元格设置字体

excelobject.ActiveShee.t cells[1, 1].Font.Name:=‘宋体’//设置第1行第1列单元格字体为宋体。

1.2.1 3 Excel报表页面的设置与控制

excelobject.ActiveSheet.PageSetup.CenterHeader=”页眉”//设置页眉

excelobject.ActiveSheet.PageSetup.CenterFooter=“页脚”//设置页脚

excelobject.ActiveSheet.PageSetup.TopMargin=1/0.035设置上边距 (单位为英寸)

excelobject.ActiveSheet.PageSetup.BottomMargin=1/0.035设置下边距 (单位为英寸)

excelobject.ActiveSheet.PageSetup.LeftMargin=1/0.035设置左边距 (单位为英寸)

excelobject.ActiveSheet.PageSetup.RightMargin=1/0.035设置右边距 (单位为英寸)

excelobject.ActiveSheet.PageSetup.CenterHorizontally=true设置页面水平居中

excelobject.ActiveSheet.PageSetup.CenterVertically=true设置页面垂直居中

excelobject.ActiveSheet.PageSetup.PaperSize=1设置页面纸张大小。

1.3 Excel对象的释放

当报表数据处理完毕后应断开与Exce应用程序的连接, 并删除创建的对象。具体命令如下:

excelobject.disconnectobject ()

destroy excelobject

2 实际使用Excel制作报表的几个问题

2.1 报表格式的确定

报表格式的确定对管理信息系统如何实现报表起着决定性的影响。如果报表的格式要求比较烦琐, 就可以先使用Excel制作报表模板, 在管理信息系统中使用打开模板文件的方式产生报表。由于Excel模板在数据导入之前就已经按照标准制定好所以只要在程序中控制数据放入模板文件相应的单元格中即可。而对于报表格式多变的管理信息系统尤其是要求动态报表的管理信息系统, 由于数据的不同, 需要不同的报表格式, 则可以直接在程序中根据要求控制Excel报表的生成。

2.2 打印

对于Excel报表的打印, 因Excel本身就是一个良好的电子表格工具, 具有强大的排版功能, 所以管理信息系统中可以直接将生成的Excel报表显示出来提供用户进一步设置格式及自主打印;但对于要求报表数据不能进行改动的情况则可以不显示Excel报表, 打印在程序中进行控制完成, 从而提高管理信息系统报表的准确性。因不同要求进行报表打印的不同实现, 也是选择利用Excel作报表的优点。

3 结语

利用PowerBuilder与Excel结合的动态报表技术来完成数据库管理信息系统的报表功能, 是PowerBuilder制作复杂报表的最优选择, 因为PowerBuilder不但能控制数据窗口的数据与Excel报表之间数据的交换, 而且还可以利用OLE技术完成Excel报表中的大部分Excel自身功能。对PowerBuilder开发管理信息系统的复杂报表方面将大大改进。

摘要:本文讲述了PowerBuilder与Excel结合的动态报表制作技术, 通过PowerBuilder与Excel结合及OLE技术的特点, 利用OLE对象实现PowerBuilder与Excel间数据交换, 使得PowerBuilder中各种复杂报表的制作问题得到解决。

关键词:PowerBuilder,Excel,OLE对象,动态报表

参考文献

[1] PowerBuilder 9.0应用开发丛书[M].清华大学出版社, 2003.

[2] 王奇成.PowerBuilder应用程序中的OLE编程技术[J].铁路计算机应用, 2005 (6) .

[3] 王珊, 萨师煊.数据库系统概论[M].等教育出版社, 2006.

上一篇:土木工程基础施工技术要点研究下一篇:中国海外投资风险及防范措施研究