c#开发wps插件
wps 2016版比旧版感觉大气多了,加载速度快,操作方便,一直是wps的优点。随着wps的稳定性提高(当然比office还是差了很多),政府等一些部门采用几乎免费的wps来办公。我们公司决定把业务扩展到wps。于是我开始wps的研究。
我觉得研究的困难有以下:
1、关于wps插件开发的资料比较少。在网上搜来搜去,就是一个官方的开发论坛,这个论坛对开发者的作用无疑就是一根稻草。有了这根稻草,然后在里面搜索有价值的东西。
2、我研究的是最新的2016版,而论坛上都是wps 2013的相关资料。开发思路是相同的,所以这个不用担心,但是吃现成的饭,那是不可能的,得自己动手动脑。
3、部署。好不容易开发出来,但是不知道如何部署,而且也没有那么容易。
我做过office插件,在这里首先回顾下office插件的开发过程。office插件开发,我使用的是vsto技术,之前写过vsto开发插件的文章。开发office插件,本质是开发一个com组件,当office启动的时候去注册表中扫描所有的插件信息,包括插件的描述、位置以及加载方式等信息,获取到插件信息,然后加载,这便是office中的com加载项,加载成功后,在内存中便有了office进程。vsto隐藏了com实现的本质,是开发人员更多关注业务,另一方面,部署起来也是相当方便。
上面说了下office插件加载的原理,接下来,我们说一说如何开发一个office com加载项?
office本身是一个com组件,它公布了两个重要的接口:IDTExtensibility2, IRibbonExtensibility。看看它们内部公布的方法:

接口定义非常明确,插件要被加载,必须得实现这个接口。

这个接口直接返回一个xml的资源文件内容。xml定义了office ribbon(office 功能菜单)。
无论是office还是wps的插件开发,原理都一样,不同点是office和wps提供的api有一些不一样,但大体上非常相似。下一篇,我们具体谈开发过程。
c#开发wps插件的更多相关文章
- vsto下开发wps插件
我们要开发wps插件了.之前用vsto开发过word插件,我也讲过c#下如何开发wps插件(有点繁琐).如果采用c#从头再开发wps插件,那么开发出来的office加载项就会出现两个.我们要实现的wp ...
- c#开发wps插件(3)部署
上一篇,我们完成了具体的开发工作,但是最终必须得部署到客户机器上.所以,部署方面,我花费了一些时间去研究,现在总结下.上一篇中,我为什么建议开发人员安装wps专业版呢?因为装了专业版,方便我们开发,安 ...
- c#开发wps插件(2)
上一篇,我们谈了插件开发原理,现在该是应用原理的时候了.工欲善其事必先利其器,首先安装wps 2016专业版,然后再开发. 第一步:打开vs2010,新建一个类库项目,项目结构如下: 说明:其中Res ...
- Excel催化剂开源第32波-VSTO开发的插件让WPS顺利调用的方法-注册表增加注册信息
VSTO插件开发完成后,鉴于现在WPS用户也不少,很多时候用户没办法用OFFICE软件,只能在WPS环境下办公,VSTO开发的插件,只需增加一句注册表信息,即可让WPS识别到并调用VSTO开发的功能, ...
- 教你开发jQuery插件(转)
教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文: ...
- 自己动手开发jQuery插件
因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就蛋疼菊紧的人来说,一天时间8小时,保守估计有5个小时在 ...
- Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN
Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN.NET http://blog.csdn.net/borishuai/article/details ...
- python开发vim插件
[python开发vim插件] 按如下方式使用python开发vim插件,注意调用时使用的是exec. 但在函数中嵌入python代码更为简便,如下: python如何传递参数给python: 代码头 ...
- C#开发BHO插件UrlTrack
最近忽然突发奇想,想统计一下我最经常上的网站是哪些,并且在这些网站上都停留了多久.为此决定写一个BHO插件来做这件事. BHO(Browser Help Objects)是实现了特定接口(IObjec ...
随机推荐
- Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载
元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...
- bzoj 1814 Ural 1519 Formula 1 插头DP
1814: Ural 1519 Formula 1 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 942 Solved: 356[Submit][Sta ...
- c中有序表的简单定义
#include <iostream> using namespace std; #define MaxSize 50 typedef int ElemType; //定义变量int的别名 ...
- nodejs爬虫初试---superagent和cheerio
前言 早就听过爬虫,这几天开始学习nodejs,写了个爬虫 demo ,爬取 博客园首页的文章标题.用户名.阅读数.推荐数和用户头像,现做个小总结. 使用到这几个点: 1.node的核心模块-- 文件 ...
- enable multi-tenancy on openstack pike
Multi-tenancy 是openstack ironic从Ocata版本开始支持的新特性,通过network-generic-switch插件控制交换机,Ironic可以实现在不同租户间机网络隔 ...
- Storm日志分析调研及其实时架构
1.Storm第一个Demo 2.Windows下基于eclipse的Storm应用开发与调试 3.Storm实例+mysql数据库保存 4.Storm原理介绍 5. flume+kafka+stor ...
- 恢复Mysql丢失的root用户权限
今天安装了某个程序时, 由于程序很傻X的 新建了一个 root@localhost 用户 并把 root权限全部改为了 no 这下 我也 傻X 了.服务器上所有程序都崩溃了. 此时即使用root用 ...
- centos7安装zabbix3.2.4
系统:CentOS Linux release 7.2.1511 (Core) zabbix:3.2.4 一.yum -y install httpd mysql mysql-server mysql ...
- Python中从B类中调用A类的方法。
好久没上了,Python还在学--最近进度有点慢... 下面代码记录了一个不太好理解的点,自己写了个小例子,总算是理顺了. B类想要调用A类,自己在网上看了一下其他人的回复:创建A类的实例,直接调用这 ...
- css进行中打点效果
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...