wps加载项简单实现过程
回复https://bbs.wps.cn/topic/59184
文件资源管理器,地址栏,输入 或者复制粘贴%APPDATA%\kingsoft\wps 后按回车
1、wps目录下,如果有jsaddons文件夹,则打开该文件夹,如果没有,则创建jsaddons文件夹
2、进入jsaddons文件夹,创建publish.xml文件。
3、编辑publish.xml文件,内容输入:(保存时记得用UTF-8编码)
<?xml version="1.0" encoding="UTF-8"?>
<jsplugins>
<jsplugin name="WPS_EXT_ADDINS" enable="enable_dev" url="file://" type="et" version="0.01"/>
<!-- 记住自己随意定义的 name属性的值 WPS_EXT_ADDINS 和version的值 0.01-->
</jsplugins>
4、在jsaddons文件夹下,创建 WPS_EXT_ADDINS_0.01 文件夹,这个文件夹的名字必须和name的值,version的值保持一致,记得中间有个下划线
5、进入 WPS_EXT_ADDINS_0.01 文件夹,创建 ribbon.xml ,内容如下:(保存时记得用UTF-8编码)
<customUI >
<ribbon startFromScratch="false" >
<tabs>
<tab id ="tab1" label = "WPS_EXT_ADDINS" getVisible="true">
<group id="g1">
<button id = "bt_taskpane" onAction = "taskpane" label="任务窗格" imageMso="HappyFace" getVisible="true" getEnable="true"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
6、在WPS_EXT_ADDINS_0.01 文件夹,创建 index_TaskPane.html 文件,编辑index_TaskPane.html,内容如下:
<!DOCTYPE html>
<html>
<meta charset='utf-8'>
<script type='text/javascript' src='js/taskpane.js'></script>
<body>
<div id="div-1">
<h3> 任务窗格功能区主页面 </h3>
<p id = "p-end"></p>
</div>
</body>
</html>
7、在WPS_EXT_ADDINS_0.01 文件夹,创建 js 文件夹,在js文件夹下,创建main.js 文件,main.js文件 内容如下:
function taskpane() { let tsId = wps.PluginStorage.getItem("taskpaneID"); if (!tsId) { let tskpane = wps.CreateTaskPane(Application.Env.GetAppDataPath() + "/kingsoft/wps/jsaddons/WPS_EXT_ADDINS_0.01/index_TaskPane.html", ""); let id = tskpane.ID; wps.PluginStorage.setItem("taskpaneID", id) ; tskpane.Visible = true; tskpane.Width = 600; tskpane.DockPosition = wps.Enum.JSKsoEnum_msoCTPDockPositionLeft; } else { let tskpane = wps.GetTaskPane(tsId); tskpane.Delete(); wps.PluginStorage.setItem("taskpaneID", 0); } return true; }
8、在js文件夹下,创建taskpane.js 文件,taskpane.js文件 内容如下:
window.onload = function(){ initialize(); }; function initialize(){ let nSheets = wps.Application.ActiveWorkbook.Sheets.Count; add_Li_Element(nSheets); } function activatesheet(param){ return function(event){ wps.Application.ActiveWorkbook.Worksheets.Item(param).Activate(); } } function add_Li_Element(nSheets){ for(let i=nSheets;i>0;i--){ var newLi = document.createElement('li'); newLi.innerHTML = wps.Application.ActiveWorkbook.Sheets.Item(i).Name; newLi.addEventListener('click',activatesheet(newLi.innerHTML),false); var referenceNode = document.getElementById('p-end'); document.getElementById('div-1').insertBefore(newLi, referenceNode); } }
多工作簿任务窗格列表,需要替换taskpane.js内容如下:
window.onload = function(){ initialize();};function initialize(){ let nWorkbooks = Application.Workbooks.Count; add_details_Element(nWorkbooks); }function activatesheet(param1,param2){ return function(event){ //console.log(param); //console.log(event.srcElement.firstChild.data);
wps.Application.Workbooks.Item(param1).Worksheets.Item(param2).Activate(); }; }function add_details_Element(nWorkbooks){ var divElement = document.getElementById('div-1'); var referenceNode = document.getElementById('p-end'); for(let i = nWorkbooks;i>0;i--){ var newdetails = document.createElement('details'); var newsummary = document.createElement('summary'); var newp = document.createElement('p'); newsummary.innerHTML = wps.Application.Workbooks.Item(i).Name; divElement.insertBefore(newdetails, referenceNode); divElement.insertBefore(newp, referenceNode); newdetails.appendChild(newsummary); let nSheets = wps.Application.Workbooks.Item(i).Worksheets.Count; add_Li_Element(newsummary.innerHTML,nSheets,newdetails); } }function add_Li_Element(workbookname,nSheets,appendElement){ for(let i=nSheets;i>0;i--){ var newLi = document.createElement('li'); newLi.innerHTML = wps.Application.Workbooks.Item(workbookname).Worksheets.Item(i).Name; newLi.addEventListener('click',activatesheet(workbookname,newLi.innerHTML),false); //var referenceNode = document.getElementById('p-end'); //divElement.insertBefore(newLi, referenceNode);
appendElement.appendChild(newLi); } }
关于快捷方式。
keytip方法使用说明:按下alt键,等待菜单栏显示快捷按键后,按下B键切换到加载项选项卡页面,再次按下快捷按键B,即可启动任务窗格按钮功能,按键方法和快捷热键按键方式不同,快捷热键是同时按下快捷键。Keytip方法每次按键有间隔,需要按三次也就是,Alt,等1秒,按B等1秒,再按B键。1秒是我认为的时间,实际比这个快。掌握好节奏习惯就好
需要修改ribbon.xml文件,tab和button按钮的keytip属性,我设定的是B键。
<customUI > <ribbon startFromScratch="false" > <tabs> <tab id ="tab1" label = "WPS_EXT_ADDINS" getVisible="true" keytip = "B"> <group id="g1"> <button id = "bt_taskpane" onAction = "taskpane" label="任务窗格" imageMso="HappyFace" getVisible="true" keytip = "B" getEnable="true"/> </group> </tab> </tabs> </ribbon></customUI>