起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4952|回复: 1

平台附件组件中office编辑时候采用vba操作word的做法

  [复制链接]

10

主题

897

帖子

1909

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1909
QQ
发表于 2013-1-5 09:17:12 | 显示全部楼层 |阅读模式
  1. function officeAutomation() {
  2.     var p = {
  3.         "picUrl" :"[url=http://www.baidu.com/]http://www.baidu.com[/url]"
  4.     };
  5.     var func = function(param){
  6.         var url = param.picUrl;
  7.         var app = $OV('ov').Application;
  8.         app.Selection.TypeText("我要插入图片url是:"+url);
  9.     };
  10.     var wordOcx = document.getElementById('attSendDoc_docExtObj');
  11.     wordOcx.excuteJSmethod(new String(func), OV.JSON.stringify(p));
  12. }
复制代码
如果希望在用户编辑word之前,用代码先对word进行一些编辑,可以利用上面的函数,在attachmentEditor组件所在的页面(js文件)中添加officeAutomation函数,然后附件组件在编辑office的时候会自动调用这个函数。

代码说明:
1、var wordOcx = document.getElementById('attSendDoc_docExtObj');

其中的attSendDoc_docExtObj,前半部分attSendDoc是attachmentEditor组件的id,后半部分不要修改,返回的结果就是操作word用的ocx。

2、wordOcx.excuteJSmethod(new String(func), OV.JSON.stringify(p));

其中func是一个函数,是你希望在编辑word之前执行的函数。里面可以利用$OV('ov').Application 拿到当前打开的word对象。excuteJSmethod就是执行一个js函数,第一个参数是js函数的string形式,第二个参数是json格式的参数,需要stringify,可以理解成类似eval函数的能力。

本例officeAutomation函数执行的效果如图所示
office.JPG

特别注意:本方案没有作为平台设计器上自带的能力提供,所以是作为office组件不完善时期的方案,x5.2.3以后版本随着office组件完善会提供更加友好的方式,所以希望以后的朋友看到后注意下自己的版本。平台升级后这部分代码的能力会兼容性保留,也就是说以后升级版本现在的代码也可以使用,只是以后有更友好的方案后并不推荐这个写法。
qq上找我时候,不要问我在不,直接发问题,我看到后会去论坛回复你的帖子。

226

主题

1000

帖子

1931

积分

金牌会员

Rank: 6Rank: 6

积分
1931
QQ
发表于 2013-1-5 09:24:36 | 显示全部楼层
支持一下
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-21 20:21 , Processed in 0.053841 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表