|
|
 |
 |
PB调用Word制表一法

在进行Client/Server系统开发中,PowerBuilder无疑是广大程序员的常用工具。PB的DataWindow控件为编程人员提供了一个方便直观的报表生成工具,但对一些特殊要求的报表,用DataWindow去实现就十分困难,若利用Word强大的文档处理功能却能达到理想的效果。笔者在开发一个MIS系统中,尝试将PB与Word结合起来,制作出了令人满意的报表和文档。
PB与Word结合的基础是微软的自动化技术(OLE Automation)。通过OLE将数据从PB传至Word,借助Word本身具有的VBA功能完成相应的任务。下面以一个简单的例子来说明。
本例要完成的功能是在一SinglelineEdit控件中输入字串,点击按钮,程序启动Word,打开模板文件将输入的字串插入,然后另存为一新文件。为此,首先在当前目录下生成一Word文件作为模板,文件名为mytemplete.doc,并于适当位置设定书签mybkmark。
接下来用PB新建一个Window,其上放置两个控件SinglelineEdit和Button,分别命名为sle—input和cb—ok。为简洁起见,在此略去了与本文关系不大的代码,仅将cb—ok的Click Event 中的Script摘录如下:
//声明变量类型为OLEObject
OLEObject myword
long ll—status
//创建一OLEObject
myword=Create oleObjec
//启动OLE自动化服务(即Word),并与之建立连接。
ll—status=myword.connecttonewobject(″word.Application″)
if ll—status〈0 then
messagebox(″错误″,″不能启动Word!″)
else
//新增一个Word文档对象
myword.documents.add(″mytemplete.doc″,false)
//通过赋值语句,将字串插入′mybkmark′书签位置
myword.Documents.item(1).Bookmarks.Item(″mybkmark″).Range.Text = sle—input.text
//另存为′myreport.doc′文件
myword.documents.item(1).saveas(″myreport.doc″)
//文档可见
myword.visible=true
myword.disconnectobject()
end if
//消去内存中的OLEObject变量
DESTROY myword
本程序在PB6.0上编译通过,运行时系统必须已安装了Word 97,操作系统应为Windows 95/98。
(作者:程坚 2000年01月07日 12:26)
|
 |