PB中利用OLE控件使用WORD.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PB中利用OLE控件使用WORD

PB(PowerBuilder)是Sybase公司推出的一种优秀的数据库开发工具,利用它的数据窗口控件可以快速地开发出一个数据管理系统。现在许多单位很注重报表的格式,需要不同类型的报表,所以必须提高报表格式的多样性。虽然我们可以利用PB设计出具有打印功能的窗口,但是由于格式是事先规定好的,用户很难根据需要进行修改。Word是大家熟悉的一种文字处理工具,具有强大的编辑与打印功能。如果能够将数据源动态地导入到Word文档中,然后在Word中调整和打印,用户的自由度就比较大。下面笔者以生成用户话费清单为例,介绍一种通过OLE技术嵌入Word文档的方法。创建模板文件首先,我们建立一个报表样式的模板文件,取名为用户清单模板.dot。根据需要录入静态文本,并在需要插入动态数据的地方插入书签。书签名字与PB数据源中列的名字一致,如图1所示。?图1 模板文件编写程序1.数据窗口d_user和d_cost,分别取自移动电话用户基本信息表和用户话费记录表,数据模型如2. PB和Word通信时,如果向Word中输出汉字,则该汉字后面会出现与汉字个数相同的乱码,所以必须编写函数处理这种情况。定义全局函数integer f_getcnnum(string aString)。代码如下:string ls_ch //临时单元string ls_SecondSecTable //存放所有国标二级汉字读音integer li_num = 0 //返回值integer i,jfor i = 1 to Len(aString)? ls_ch = Mid(aString,i,1)? if Asc(ls_ch) = 128 then //判定是汉字? li_num++? i = i+1? end ifnextreturn li_num? ? 3.创建窗口w_costlist,其中包含两个数据窗口dw_1和dw_2,分别对应数据窗口d_user和d_cost。再插入两个单行编辑器sle_1和sle_2,分别用于用户录入和选择模板文件与文档输出路径。本文省略选择文件与路径按钮的编程代码。4.添加生成用户清单(Word)按钮。该按钮Clicked事件代码如下:constant integer ppLayoutBlank = 12OLEObject ole_objectole_object = CREATE OLEObjectinteger li_ret//建立与Word的连接li_ret = ole_object.ConnectToObject(Word.application)if li_ret 0 then? //如果Word还没有打开,则新建一个Word? li_ret = ole_object.ConnectToNewObject(Word.application)? if li_ret 0 then? MessageBox(OLE错误,OLE无法连接! 错误号: + string(li_ret))? return? end if? ole_object.Visible = falseend ifstring ls_modelfilenamels_modelfilename = sle_1.textstring ls_savefilenamels_savefilename = sle_2.textole_object.Documents.open(ls_modelfilename)constant long wdWord9TableBehavior = 1constant long wdAutoFitFixed = 0constant long wdCell = 12long i,j,k,ll_colnum,ll_rownumstring ls_value,ls_colname//输出清单表头ll_colnum = Long(dw_1.object.datawindow.column.count)dw_1.setredraw(false)for j = 1 to ll_colnum? dw_1.setcolumn(j)? ls_value = dw_1.gettext()? ls_colname = dw_1.describe(# + string(j) + .name)? if ls_colname = name then ls_savefilename + =? \用户 + ls_value + 话费清单.doc? ole_object.selection.goto(true,0,0,ls_colname)? ole_object.Selection.TypeText(ls_value)? for k = 1 to f_getcnnum(ls_val

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档