论文部分内容阅读
[摘要]使用PowerBuilder编程软件,结合OLEObject技术和PowerBuilder的数据窗口,实现将excel报表导入到数据库中以及将数据库中的数据导出到excel文件中的功能。
[关键词]PowerBuilder excel OLE对象 数据导入导出
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0710062-01
在为某单位制作一个管理信息系统软件时,用户提出,系统中要能够实现excel表格的导入和导出。Excel软件是专门为处理各式电子表格而设计,它能够非常高效而专业的处理各式表格,在使用这个管理信息系统软件之前,单位的大部分数据都是保存在excel中的。系统前台的开发使用的是POWERBUILDE,POWERBUILDER是面向对象的数据库开发工具之一,它可以操纵众多大型数据库和桌面数据库,支持多种硬件平台。但它有一个致命的弱点,就是打印报表非常不方便,打印函数太少,特别是对中国式报表。而 EXCEL制表却非常容易,若把两者结合起来使用则会取长补短。也就是说我们的这个系统要既能将excel报表中的内容导入到数据库中,又要能将数据库中的数据导出到excel中。
PowerBuider是Sybase公司推出的一种高级数据库应用程序开发环境,在这个环境中开发数据库应用程序,使用其专利技术DataWindow,可以很轻松的开发出非常专业的数据库应用程序。此外,PowerBuilder还支持多种数据库,能够很轻松的与目前流行的MS SQL Server、Oracle等企业级数据库建立连接,处理各种事务。PowerBuilder中的编程语言被称为脚本(Script),实际上,使用PowerBuilder编写的程序也是事件驱动,在界面设计上也完全做到了“所见即所得”,并完全使用面向对象的编程思想,它还提供了对OLE、DDE、Automation等技术的支持,下面我们就先来看一下如何将excel报表通过powerbuilder导入到数据库中。
首先,声明一个OLE对象,如下:
OLEObject ExcelServer
其次,创建该OLE对象,如下:
ExcelServer =Create OLEObject
然后,使用PowerBuilder中的ConnectToNewObject函数来创建一个新的OLE对象,并且连接到该对象上,如下:
ExcelServer. ConnectToNewObject ("excel.Application")调用该函数时,如果成功的话,返回值是0,否则就意味着调用失败。
调用函数成功后我们需要利用getfileopenname函数调用一个对话框,用来选择将要导入到数据库中的excel报表。具体代码如下,省略了部分变量定义语句。
value=getfileopenname("请选择文件名",str_filename,file,"xls","xls Files (*.xls),*.xls")
ExcelServer.Workbooks.Open(str_filename)
str_savename="c:\temp.txt"
excelserver.activeworkbook.saveas(str_savename,3)
在作完以上工作以后,需要关闭自动化对象,撤销与自动化服务器的连接,销毁OLE对象,因为使用自动化程序,尤其是Word或Excel这样的Office程序,所消耗的系统资源是很庞大的,因此在每次工作完成之后,需要释放这部分系统资源。代码如下:
ExcelServer.quit()
ExcelServer.DisconnectObject()
DESTROY ExcelServer
系统资源释放后通过dw_1.ImportFile(str_savename)语句将excel
报表中的内容显示到powerbuilder的数据窗口中,再通过dw_1.update()命令将数据保存在数据库中。
在导入过程中有一点需注意,就是数据库中表的列与相应excel报表的列的数据类型要相对应。
以上为导入excel报表的过程,下面我们看一下将数据库中数据导出到excel文件中的过程。
首先,声明两个OLE对象,如下:
OLEObject newoleobject,newoleworkbooks
其次,创建该OLE对象,如下:
newoleobject=Create oleobject
然后,使用PowerBuilder中的ConnectToNewObject函数来创建一个新的OLE对象,并且连接到该对象上,如下:
newoleobject. ConnectToNewObject ("excel.Application")调用该函数时,如果成功的话,返回值是0。
函数调用成功后,我们打开一个excel文件并且使这个文件可见,然后利用cell函数将数据窗口中的数据导出到excel文件中,部分代码如下:
newoleobject.workbooks.add
newoleobject.visible=true
newoleworkbooks=newoleobject.worksheets(1)
newoleworkbooks.cells(1,1).value="列名1"
newoleworkbooks.cells(1,2).value="列名2"
……………………
long rownumber
for rownumber=2 to dw_1.rowcount()+1
newoleworkbooks.cells(rownumber,1).value=rownumber - 1
newoleworkbooks.cells(rownumber,2).value=dw_1.getitemstring(rownumber - 1,1)
newoleworkbooks.cells(rownumber,3).value=dw_1.getitemstring(rownumber - 1,2)
………………………
Next
将数据导出到excel文件后,用getfilesavename函数调用对话框将excel文件保存到适当的位置,最后将系统资源释放,代码如下:
value=getfilesavename("请选择文件名",str_filename,file,"xls","xls Files (*.xls),*.xls")
newoleworkbooks.saveas(str_filename)
newoleobject.quit()
newoleobject.disconnectobject()
destroy newoleobject
destroy newoleworkbooks
以上内容为在PowerBuilder中实现excel文件的导入和导出功能的详细说明,通过实际应用表明,实现excel报表的导入功能能避免重新在数据库中录入数据的繁琐,数据库中数据导出到excel文件使数据的打印更为方便和灵活,这两个功能也是我们在制作管理信息系统软件时必不可少的两个功能。
参考文献:
[1]郑阿奇、殷红先、张为民,编著 PowerBuilder实用教程(第二版)电子工业出版社,2004.3.
[2]华传铭、张振坤、吴晓英,编著 PowerBuilder 9.0 数据库开发实例 机械工业出版社 2003.9.
[关键词]PowerBuilder excel OLE对象 数据导入导出
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0710062-01
在为某单位制作一个管理信息系统软件时,用户提出,系统中要能够实现excel表格的导入和导出。Excel软件是专门为处理各式电子表格而设计,它能够非常高效而专业的处理各式表格,在使用这个管理信息系统软件之前,单位的大部分数据都是保存在excel中的。系统前台的开发使用的是POWERBUILDE,POWERBUILDER是面向对象的数据库开发工具之一,它可以操纵众多大型数据库和桌面数据库,支持多种硬件平台。但它有一个致命的弱点,就是打印报表非常不方便,打印函数太少,特别是对中国式报表。而 EXCEL制表却非常容易,若把两者结合起来使用则会取长补短。也就是说我们的这个系统要既能将excel报表中的内容导入到数据库中,又要能将数据库中的数据导出到excel中。
PowerBuider是Sybase公司推出的一种高级数据库应用程序开发环境,在这个环境中开发数据库应用程序,使用其专利技术DataWindow,可以很轻松的开发出非常专业的数据库应用程序。此外,PowerBuilder还支持多种数据库,能够很轻松的与目前流行的MS SQL Server、Oracle等企业级数据库建立连接,处理各种事务。PowerBuilder中的编程语言被称为脚本(Script),实际上,使用PowerBuilder编写的程序也是事件驱动,在界面设计上也完全做到了“所见即所得”,并完全使用面向对象的编程思想,它还提供了对OLE、DDE、Automation等技术的支持,下面我们就先来看一下如何将excel报表通过powerbuilder导入到数据库中。
首先,声明一个OLE对象,如下:
OLEObject ExcelServer
其次,创建该OLE对象,如下:
ExcelServer =Create OLEObject
然后,使用PowerBuilder中的ConnectToNewObject函数来创建一个新的OLE对象,并且连接到该对象上,如下:
ExcelServer. ConnectToNewObject ("excel.Application")调用该函数时,如果成功的话,返回值是0,否则就意味着调用失败。
调用函数成功后我们需要利用getfileopenname函数调用一个对话框,用来选择将要导入到数据库中的excel报表。具体代码如下,省略了部分变量定义语句。
value=getfileopenname("请选择文件名",str_filename,file,"xls","xls Files (*.xls),*.xls")
ExcelServer.Workbooks.Open(str_filename)
str_savename="c:\temp.txt"
excelserver.activeworkbook.saveas(str_savename,3)
在作完以上工作以后,需要关闭自动化对象,撤销与自动化服务器的连接,销毁OLE对象,因为使用自动化程序,尤其是Word或Excel这样的Office程序,所消耗的系统资源是很庞大的,因此在每次工作完成之后,需要释放这部分系统资源。代码如下:
ExcelServer.quit()
ExcelServer.DisconnectObject()
DESTROY ExcelServer
系统资源释放后通过dw_1.ImportFile(str_savename)语句将excel
报表中的内容显示到powerbuilder的数据窗口中,再通过dw_1.update()命令将数据保存在数据库中。
在导入过程中有一点需注意,就是数据库中表的列与相应excel报表的列的数据类型要相对应。
以上为导入excel报表的过程,下面我们看一下将数据库中数据导出到excel文件中的过程。
首先,声明两个OLE对象,如下:
OLEObject newoleobject,newoleworkbooks
其次,创建该OLE对象,如下:
newoleobject=Create oleobject
然后,使用PowerBuilder中的ConnectToNewObject函数来创建一个新的OLE对象,并且连接到该对象上,如下:
newoleobject. ConnectToNewObject ("excel.Application")调用该函数时,如果成功的话,返回值是0。
函数调用成功后,我们打开一个excel文件并且使这个文件可见,然后利用cell函数将数据窗口中的数据导出到excel文件中,部分代码如下:
newoleobject.workbooks.add
newoleobject.visible=true
newoleworkbooks=newoleobject.worksheets(1)
newoleworkbooks.cells(1,1).value="列名1"
newoleworkbooks.cells(1,2).value="列名2"
……………………
long rownumber
for rownumber=2 to dw_1.rowcount()+1
newoleworkbooks.cells(rownumber,1).value=rownumber - 1
newoleworkbooks.cells(rownumber,2).value=dw_1.getitemstring(rownumber - 1,1)
newoleworkbooks.cells(rownumber,3).value=dw_1.getitemstring(rownumber - 1,2)
………………………
Next
将数据导出到excel文件后,用getfilesavename函数调用对话框将excel文件保存到适当的位置,最后将系统资源释放,代码如下:
value=getfilesavename("请选择文件名",str_filename,file,"xls","xls Files (*.xls),*.xls")
newoleworkbooks.saveas(str_filename)
newoleobject.quit()
newoleobject.disconnectobject()
destroy newoleobject
destroy newoleworkbooks
以上内容为在PowerBuilder中实现excel文件的导入和导出功能的详细说明,通过实际应用表明,实现excel报表的导入功能能避免重新在数据库中录入数据的繁琐,数据库中数据导出到excel文件使数据的打印更为方便和灵活,这两个功能也是我们在制作管理信息系统软件时必不可少的两个功能。
参考文献:
[1]郑阿奇、殷红先、张为民,编著 PowerBuilder实用教程(第二版)电子工业出版社,2004.3.
[2]华传铭、张振坤、吴晓英,编著 PowerBuilder 9.0 数据库开发实例 机械工业出版社 2003.9.