wps win x64体验版wps宏编辑器新增跨组件数据互通能力

邹应锋
邹应锋

@金山办公

我们一直在密切关注js宏编辑器的二次开发者的诉求,之前对呼声很高的网络接口作了支持,采用了前端通用的fetch规范接口来设计,本次win x64体验版,在社区中大家对wps宏编辑器中的跨组件数据互通能力的呼声很高,这的确也是一项重要的能力,我们带出了这项能力。此外,本次还修复了wps宏编辑器在高分辨率显示器下的显示问题,修复了很多宏编辑器中窗体控件的问题,欢迎大家尝鲜和反馈。

跨组件数据互通,它类似于在vba编辑器中的CreateObject()的能力,一些典型的使用场景是围绕组件间的数据流转,比如把wps电子表格中的统计数据自动插入到wps文字文档或演示幻灯片中、把wps文字中的表格类数据自动导入到wps电子表格中等。下面我举例子给出一下使用说明:

执行以上宏代码,会启动wps表格并填入数据,效果如下:

以上代码通过打开wps文字的js宏编辑器,执行宏编辑器中的代码,则把简历中的求职人的关键信息提取了出来,并输出到wps表格中。

这次的wps宏编辑器中新增的CreateObject支持三大组件中的相互数据通信,对应的key值分别为ket.application/kwps.application/kwpp.application. 这个能力是跨平台通用的。

实际上,从开放性着想,CreateObject在设计上保持了与第三方进程通信的能力,开发者可以将任何第三方程序与wps组件进行通信,key值由开发者自行定义,并扩展自己任意的接口来在wps宏编辑器中使用。关于这一块的能力请大家继续关注。

广东省
浏览 4073
6
38
分享
38 +1
61
6 +1
全部评论 61
 
楷
大佬,能否写一个Excel导出word的例子借鉴一下
· 广东省
回复
 
楷
请教一下,这段代码为何会如此报错
· 广东省
回复
 
张俊
刚接触这个功能,哪里有wps的官方教程啊?谢谢!
· 山东省
回复
 
方伟
CreateObject支持三大组件中的相互数据通信 现在还不支持第三方DLL么 let PUB_DB =CreateObject("ExcelToSQL.MyClassExcelToSQL")
· 黑龙江省
回复
 
阿笨猪
linux版本什么时候支持呢?
· 江西省
回复
 
chendeqian
要单独安装宏的吗?哪里可以下载的
· 广西
回复
 
Eric Hu
在WPS表格中使用JSA创建WPS演示对象kwpp后,对Slide中矩形进行删除时程序崩溃。命令是Shapes.Item(1).Delete()
· 广东省
回复
Eric Hu
或者这样:Shapes.Item(‘shapename’).Delete()
· 广东省
回复
 
耀愿
请问有没有Linux版啊?
· 广东省
回复
 
耀愿
这样挺好,可以实现数据互通了
· 广东省
回复
似水无痕
还没那么美好
· 湖南省
回复
 
似水无痕
WPS表格中的代码: function et_test(){ const obj={et:"WPS表格",wpp:"WPS演示"}; const wpp=CreateObject("kwpp.application"); wpp.Presentations.Open(`${ThisWorkbook.Path}\\WPS演示.pptm`); //wpp.Run("WPS演示.pptm!wpp_test",[JSON.stringify(obj)]); //wpp.Run("WPS演示.pptm!wpp_test",JSON.stringify(obj)); wpp.Run("WPS演示.pptm!wpp_test",obj); } WPS演示中的代码: function wpp_test(obj){ obj=JSON.parse(obj); alert(obj["wpp"]) } 运行到这句,wpp.Run("WPS演示.pptm!wpp_test",obj),尝试了多种方案,总是提示第二参数的类型错误。
· 湖南省
回复
覃欢
覃欢

@金山办公

这个写法哈克不支持
· 湖北省
回复
 
似水无痕
在WPS演示的宏编辑器中继续编写如下代码测试: function test3(){ Application.Run("test4","123"); } function test4(x){ console.log(x); } 测试结果:报错,Application.Run传递的参数是否只能是数组?因为只有参数为数组时,才不会报错。
· 湖南省
回复
WPS催化剂-李伟坚
字符串也报错?我理解Application.Run里的参数,应该只能是普通类型的参数如字符串、数字等,不能是对象参数。
· 广东省
回复
 
似水无痕
在WPS演示的宏编辑器中编写如下代码测试: function test1(){ Application.Run("test2",[1,2,3]); } function test2(arr){ console.log(arr[0]); console.log(arr[1]); console.log(arr[2]); } 测试结果:无法输出任何结果,Application.Run的参数传递是否存在问题?
· 湖南省
回复
 
似水无痕
这次只测试个人版吗?什么时候能测试64位专业版呢?
· 湖南省
回复
 
Eric Hu
请问哪里可以下载此内测版本?
· 广东省
回复
覃欢
覃欢

@金山办公

https://bbs.wps.cn/topic/34012
· 广东省
回复
 
哈哈
津津有味的学习
· 贵州省
回复
 
fbfbzz
学习了
· 江苏省
回复
 
uibpqds
打卡
· 河南省
回复
 
@me
打卡
· 北京
回复
 
千锤百炼
如何实现用js实现:excelAPP('value1', 'value2')="new value",这个是需要给对象直接赋值,不是返回一个值。
· 浙江省
回复
似水无痕
对象的写法不对吧,也没有这样的赋值方式
· 湖南省
回复
 
千锤百炼
obj=openexcel(1.xxls) obj.range(1,2)="姓名" js如何实现赋值?
· 浙江省
回复
邹应锋
邹应锋

@金山办公

试下obj.ActiveSheet.Cells.Item(1, 2).Value2="姓名"
· 广东省
回复