在PowerBuilder中利用自动化技术调用Excel处理与打印(2)
2014-08-16 01:07
导读:调用该函数时,如果成功的话,返回值是0,否则就意味着调用失败。 到此,自动化的准备工作已经完成,下面是具体的操作过程。 4 处理和打印表格 在调
调用该函数时,如果成功的话,返回值是0,否则就意味着调用失败。
到此,自动化的准备工作已经完成,下面是具体的操作过程。
4 处理和打印表格
在调用Excel时,首先需要解决的一个问题是是否让Excel可见,即是否为后台操作。这个问题可以简单的通过设置Visible属性加以控制,如果希望Excel后台运行,可以简单的编写如下语句:
OLE_MyExcel.visible=false
然后是打开指定的XLS文件,具体的语句如下:
OLE_MyExcel.Application.Workbooks.Open ("d:excel-example.xls")
要操纵数据列表中的数据单元,就必须对ActiveCell对象进行操纵,该对象是Application对象中一项属性。将数据输入到一个数据单元包括两个步骤:第一是选择一个数据单元,第二是将数据传递给它。选择一个数据单元通过调用Range对象的Select()方法就可以完成,Range对象是用来选择一个或多个数据单元的。Select()方法需要起始的行数、列数和结束的行数、列数来确定所选择的数据单元。如果只选择一个单独的数据单元,就可以忽略结束的行、列数。当范围被设定以后,将数据传递给ActiveCell对象(引用了被Range对象指定的数据单元)的FormulaR1C1属性。如下:
OLE_MyExcel.Range("c10").Select()
OLE_MyExcel.ActiveCell.FormulaR1C1 = sle_2.text //Sle_2为一个静态文本框控件
OLE_MyExcel.Range("J10").Select()
……
如果希望得到一系列数值的和,则需要首先使用Select()方法来指定需要求和的Cell的范围,然后指定存放和的Cell位置,最后调用SUM方法即可,如下:
OLE_MyExcel.Range(“A1:D1”).Select()
OLE_MyExcel.Range(“E1”).Activate()
OLE_MyExcel.ActiveCell.FormulaR1C1 = “=SUM(RC[-4]:RC[-1])”
当然还可以进行其他方面的设置,例如把字体设置为粗体(Bold),则可以编写如下代码:
OLE_MyExcel.Range(“A1:E1”).Select()
OLE_MyExcel.Selection.Font.Bold = True
(科教作文网http://zw.ΝsΕAc.com发布)
至于其他的设置可以参考相关书籍。
至于表格的打印,则是简单的调用PrintOut()方法即可,但是需要首先指定打印的范围,如下是打印名为“Sheet1”的WorkSheet的代码:
OLE_MyExcel.Worksheets("sheet1").Activate()
OLE_MyExcel.ActiveSheet.PrintOut()
接下来是关于对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。这个问题只需要简单的对OLE_MyExcel.Application.DisplayAlerts属性进行设置即可,为True时弹出警告框,为False时不弹出警告框,保存所作的修改。
最后一步,在作完所有工作以后,需要关闭自动化对象,撤销与自动化服务器的连接,销毁OLE对象,因为使用自动化程序,尤其是Word或Excel这样的Office程序,所消耗的系统资源是很庞大的,因此在每次工作完成之后,需要释放这部分系统资源。如下:
OLE_MyExcel.Application.quit()
OLE_MyExcel.DisConnectObject()
destroy OLE_MyExcel
5 结束语
在使用了自动化技术以后,完满的解决了原来的表格处理问题,可以非常方便的对各种表格进行小批量的处理与打印,非常灵活。如果能够与企业的数据库结合起来,通过外部程序将数据成批输入,亦可解决大批量数据输出的问题,不失为一条好的解决方案。
在实际应用中,通过与企业数据库相结合,使用此方法自动填写了包含了大量数据的XLS文件,并可以通过打印机打印出来.共2页: 1 [2] 下一页 论文出处(作者):
GIS在天津市“情系百姓”规划项目中的应用
Oracle数据库的优化