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>

黑龙江省
浏览 756
1
8
分享
8 +1
12
1 +1
全部评论 12
 
user_19042982
不错
· 安徽省
回复
user_19042982
测试成功,加点美化可以做个小插件了。
· 安徽省
回复
 
简简单单
大佬,这个任务窗格还有办法再完善吗?例如不同工作簿能展现各自的工作表,或者加个快捷键,能快速打开关闭用来刷新工作表名
· 广东省
2
回复
恰同学少年
都可以实现啊。只是完善代码需要时间。我这水平,还不足以,提笔就写。
· 黑龙江省
回复
 
简简单单
大佬nb,虽然我一步都看不懂,但是一步一步来就成功了,哈哈哈哈,感谢大佬
· 广东省
回复