WPS加载项(wps jsapi)创建及部署--新版

2024-05-14 21:12

本文主要是介绍WPS加载项(wps jsapi)创建及部署--新版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1,在桌面新建文件夹wpsjsapitest,在命令提示符中转到wpsjsapitest路径下,

2,新建加载项HelloWps、HelloEt、HelloWpp

(i),在命令提示符中执行命令wpsjs create HelloWps

(ii),在命令提示符中执行命令wpsjs create HelloEt

(iii),在命令提示符中执行命令wpsjs create HelloWpp

以下四步(3,4,5,6)是在不采用wpsjs publish命令时的做法(其实执行wpsjs publish,会生成一个wps-addon-build文件夹,里面内容与下面手动复制的内容一致,另外会生成一个wps-addon-publish文件夹,里面放置publish.html)。

3,在D:\Tomcat 8.*\webapps\下新建文件夹wpsjsapitest,在wpsjsapitest文件夹下新建HelloWps、HelloEt、HelloWpp,

4,将桌面wpsjsapitest\HelloWps目录下的images目录、js目录,ui目录、index.html、main.js、ribbon.xml复制到D:\Tomcat 8.*\webapps\wpsjsapitest\HelloWps目录下。

5,将桌面wpsjsapitest\HelloEt目录下的images目录、js目录,ui目录、index.html、main.js、ribbon.xml复制到D:\Tomcat 8.*\webapps\wpsjsapitest\HelloEt目录下。

6,将桌面wpsjsapitest\HelloWpp目录下的images目录、js目录,ui目录、index.html、main.js、ribbon.xml复制到D:\Tomcat 8.*\webapps\wpsjsapitest\HelloWpp目录下。

注意,D:\Tomcat 8.*是tomcat服务器目录,运行demo时请保证tomcat服务器在运行状态。

7,在桌面新建文件夹“wps jsapi test caller”,里面放三个文件,index.html,wpsjs_func.js,wpsjsrpcsdk.js,其中wpsjsrpcsdk.js是npm安装wpsjs时下载到本地的库。
浏览器打开index.html,点击第一个按钮,即可启动wps、et、或wpp(注意参数设置,下面的代码里有详细解释),并打开本地文档
例子见https://download.csdn.net/download/daqinzl/89303452。

index.html文件内容如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试集成页面</title>
    <style>
        div {
            margin: 5px 3px;
        }
    </style>
</head>

<body>
    <div><button οnclick="action1();">执行加载项函数InvokeFromSystemDemo</button></div>
    <div><button οnclick="action2();">传递一个Object至WPS</button></div>
    <div><button οnclick="action3();">传递一个String至WPS</button></div>
    <script src="wpsjsrpcsdk.js"></script>
    <script src="wpsjs_func.js"></script>
    
    
    <script type="text/javascript">        
        function action1() {                        
            var readOnly=false;
            //打开word时参数设置如下,注意与wpsjs_func.js里url设置一致
            var type = "wps";
            var filePath = "D:/test.docx";
            
            //打开excel时参数设置如下,注意与wpsjs_func.js里url设置一致
            type = "et";
            filePath = "D:/test.xlsx";
            
            //打开ppt时参数设置如下,注意与wpsjs_func.js里url设置一致
            type = "wpp";
            filePath = "D:/test.pptx";
            
            wpsJs_openFile(type, filePath, readOnly);
        }
        function action2(params) {
            
        }
        function action3(params) {
            
        }
    </script>
</body>

</html>


///
wpsjs_func.js文件内容如下:

function wpsJs_openFile(type, filePath, readOnly) {
    var element = {
        "name": wpsjs_GetAddonName(type),
        "addonType": type,
        "online": "true",
        
        //打开word,excel,ppt时请设置不同url
        "url": "http://127.0.0.1:80/wpsjsapitest/HelloWps/"
        //"url": "http://127.0.0.1:80/wpsjsapitest/HelloEt/"
        //"url": "http://127.0.0.1:80/wpsjsapitest/HelloWpp/"        
    }
    console.log('wpsjs_StartUp', element)
    WpsAddonMgr.enable(element, function(res) {
        console.log("启用加载项" + type + "结果:", res);
        var invokeParam = {
            filePath: filePath,
            readOnly: readOnly            
        }
        WpsInvoke.InvokeAsHttps(
            type,
            wpsjs_GetAddonName(type), //wps加载项的名字,在实际项目中写上对应的名字            
            "InvokeFromSystemDemo", //要调用的在wps加载项中的函数名
            JSON.stringify(invokeParam), //调用的在wps加载项中的函数要传递的数据,是一个json对象,根据业务系统需求任意定义
            wpsjs_CallBackFunc) //回调函数,wps加载项中InvokeFromSystemDemo这个函数的返回值作为这个函数的参数
    })

}

function wpsjs_GetAddonName(type) {    
    if (type == 'wps')        
        return 'HelloWps'
    else if (type == 'et')        
        return 'HelloEt'
    else if (type == 'wpp')        
        return 'HelloWpp'
    return 'addon'
}

var wpsjs_CallBackFunc = function(result) {
    
}

///
D:\Tomcat 8.*\webapps\wpsjsapitest\HelloWps\js\systemdemo.js文件内容如下

function openOfficeFileFromSystemDemo(param){
    let jsonObj = (typeof(param)=='string' ? JSON.parse(param) : param)
    alert("从业务系统传过来的参数为:" + JSON.stringify(jsonObj))
    return {wps加载项项返回: jsonObj.filepath + ", 这个地址给的不正确"}
}

function InvokeFromSystemDemo(param){
    
    let jsonObj = (typeof(param)=='string' ? JSON.parse(param) : param);
    
    let readOnly = jsonObj.readOnly;
    let filePath = jsonObj.filePath;
    
     console.log("before open jsonObj:", jsonObj);
    wps.PluginStorage.setItem("readOnly", readOnly);
    
    let _readOnly = wps.PluginStorage.getItem("readOnly");
     wps.WpsApplication().Documents.Open(filePath, null, _readOnly);
     
    return {操作结果:"打开word文件成功", readOnly: readOnly};
    
}

///
D:\Tomcat 8.*\webapps\wpsjsapitest\HelloEt\js\systemdemo.js文件内容如下

function openOfficeFileFromSystemDemo(param){
    let jsonObj = (typeof(param)=='string' ? JSON.parse(param) : param)
    alert("从业务系统传过来的参数为:" + JSON.stringify(jsonObj))
    return {wps加载项项返回: jsonObj.filepath + ", 这个地址给的不正确"}
}

function InvokeFromSystemDemo(param){
        
    let jsonObj = (typeof(param)=='string' ? JSON.parse(param) : param)
    let readOnly = jsonObj.readOnly
    let filePath = jsonObj.filePath;
    // console.log("before open jsonObj:", jsonObj)
    wps.PluginStorage.setItem("readOnly", readOnly)
    
    let _readOnly = wps.PluginStorage.getItem("readOnly")
    wps.EtApplication().Workbooks.Open(filePath, null, _readOnly)
        
    return {操作结果:"打开excel文件成功", readOnly: readOnly}
    
}

///
D:\Tomcat 8.*\webapps\wpsjsapitest\HelloWpp\js\systemdemo.js文件内容如下

function openOfficeFileFromSystemDemo(param){
    let jsonObj = (typeof(param)=='string' ? JSON.parse(param) : param)
    alert("从业务系统传过来的参数为:" + JSON.stringify(jsonObj))
    return {wps加载项项返回: jsonObj.filepath + ", 这个地址给的不正确"}
}

function InvokeFromSystemDemo(param){
    
    let jsonObj = (typeof(param)=='string' ? JSON.parse(param) : param)
    let readOnly = jsonObj.readOnly
    let filePath = jsonObj.filePath;
    console.log("before open jsonObj:", jsonObj)
    wps.PluginStorage.setItem("readOnly", readOnly)    
    
    let _readOnly = wps.PluginStorage.getItem("readOnly")
    wps.WppApplication().Presentations.Open(filePath, _readOnly)
    return {操作结果:"打开ppt文件成功", readOnly: readOnly}
    
}
 

这篇关于WPS加载项(wps jsapi)创建及部署--新版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989867

相关文章

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Java 如何创建和使用ExecutorService

《Java如何创建和使用ExecutorService》ExecutorService是Java中用来管理和执行多线程任务的一种高级工具,可以有效地管理线程的生命周期和任务的执行过程,特别是在需要处... 目录一、什么是ExecutorService?二、ExecutorService的核心功能三、如何创建

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地