乐于分享
好东西不私藏

wps加载项(一)-能用:超简例子入门

wps加载项(一)-能用:超简例子入门

    为什么执着于加载项?jsa宏随文件走,随身,方便,有权限的问题,复用性不高。加载项随便一个表格都能用,不用纠结于每次都只要打开原来的那个文件。比如每个月的报表常规格式处理,打开就能用,不用像加载项那样必须打开带有代码的文件。同样的,加载项只能在安装的电脑上用,其他电脑用不了,但是基本够用了。
   讲真的,wps的jsa宏教程太少了,但至少还有;加载项的教程更少,很多写的都不是无编程经验的人可以看的,一直想把自己的宏改成加载项一直没成功,前天忽然能跑通了,想明白了。
    写代码的人不使用,使用的人不写代码,还好现在有AI,可以方便很多,但是AI的基础是大量的文档,还有时效性严重滞后的问题。
WPS加载项本质就是一个网页,每个加载项对应打开一个网页。
    每个加载项由一个文件夹来归集放置所有相关的内容,同时所有加载项同目录下一个publish.xml文件来管理所有的加载项(相当于目录。)
    因此,最简单的方法,无需安装nodejs,无需安装wpsjs打包、发布等等,只需要新建文件夹,新建文本文件。
    这里先解决能用,再解决能改着用,最后才是美着用。

#一、加载项文件夹jsaddons

##1.windows系统:

%AppData%\kingsoft\wps\jsaddons

即C:\Users\用户名\AppData\Roaming\kingsoft\wps\jsaddons

##2.linux系统:

$home/.local/share/Kingsoft/wps/jsaddons/

即/home/用户名/.local/share/Kingsoft/wps/jsaddons/

如果第一次运行没有jsaddons,新建即可

#二、jsaddons目录构成

如前文所说,主要由以下两部分组成:

##1.某个加载项名称_版本号

如下superlitter为这个加载项的名称,1.0.0为此次的版本号

##2.publish文件

<jsplugins>    <jsplugin name="superlitter" type="et" url="file://" version="1.0.0" enable="enable_dev" install="null" customDomain="" debug=""/></jsplugins>

就是这么简单,前后的<jsplugins></jsplugins>保留,中间按上述格式插入加载项的相关信息,主要前四个。

name= 加载项的名称tpye= 加载项的类型,"et"表示表格,"wps"表示文档url= 跟部署方式有关,个别版本好像随便写有问题,     可暂时写全称,url="superlitter_1.0.0",或者url="file://"     在线部署使用url="http://127.0.0.1:3889/"version= 写版本号
#三、加载项构成
##1.index.html
加载项的入库文件,就是所谓的网页
<!DOCTYPE html><html>    <metacharset="utf-8">    <scripttype="text/javascript"src="./main.js"></script></html><!--这个文件是wps加载项的入口文件,wps在启动时加载这个文件-->
其余内容都可以删除,只保留引入main.js文件,方便后面管理
##2.main.js
//这个文件由index.html包含document.write("<scriptlanguage='javascript'src='js/test.js'></script>");
可以用来统一管理js文件夹下的js代码文件,
方面分类管理,有多个js文件就写多行,全部写在一个test.js文件里也行。
##3.ribbon.xml
跟publish类似,他是用来管理wps窗口上面的面板的
<customUIxmlns="http://schemas.microsoft.com/office/2006/01/customui"onLoad="OnAddinLoad">    <ribbonstartFromScratch="false">        <tabs>            <tabid="wpsAddinTab"label="测试">              <groupid="btnDemoGroup"label="group1">                    <buttonid="btnShowMsg"label="弹出消息框"onAction="test"enabled="true"getImage="GetImage"getVisible="OnGetVisible"size="large"/>              </group>            </tab>        </tabs>    </ribbon></customUI>
tab就是标签的名字,如上图的“测试”
gruop按钮分组,不是必须的
button一个按钮一行,同样id,label唯一,onAction表示动作关联我们的函数名称,这样一个按钮一个函数就串起来了,简单的一个函数一个按钮,后续我们只要在这边增加按钮。
##4.js文件夹
用来保存你的代码文件,跟第2点的main内容对应,如果新增js脚本文件就同步在2的main中引入该脚本。
如果只是都放在一个脚本中,在这里写你的函数就可以了。
脚本里面的函数test和第3点的按钮onAction对应。
function test(){  alert("hello")}
比如这里面有一个test.js的脚本,里面有一个test的函数,弹出一个窗口。
至此,总结起来就是如果要写自己的函数,就在js/test.js里面写就可以了,在ribbon.xml中新增按钮。这样一按按钮就运行函数。
之所以jsa的宏不能拿过来直接用是因为加载项和宏的环境不一样,有些东西需要修改,该省的不能省。比如Range(”a1″)这样写是不可以的,最少得Application.Range(”a1″),还在摸索当中,下文分解,本次先解决能用。
总结: