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 ...
随机推荐
- chromedriver与chrome版本映射表(最新)
selenium想在chrome进行跑,前提需要下载chromedriver,以下整理了chromedriver与chrome的对应关系表 chromedriver(下载地址):http://chro ...
- 高并发WEB网站优化方案
一.什么是高并发在互联网时代,所讲的并发.高并发,通常是指并发访问,也就是在某个时间点,有多少个访问同时到来.比如,百度首页同时有1000个人访问,那么也就是并发为1000.通常一个系统的日PV在千万 ...
- 关于springMVC中component-scan的问题以及springmvc.xml整理
关于springMVC中component-scan的问题以及springmvc.xml整理 一.component-scan问题和解决办法 最近在学习使用springMVC+myba ...
- C#中ASCII码学习心得
1.利用调用ASCIIEncoding类来实现各种转换.如简单个ACS码和int转换. ***利用(int)ASCIIEncoding类对象.GetBytes(character)[0]得到整数: p ...
- onCreate源码分析
原文地址Android面试题-onCreate源码都没看过,怎好意思说自己做android Activity扮演了一个界面展示的角色,堪称四大组件之首,onCreate是Activity的执行入口,都 ...
- Docker系统八:Docker的存储驱动
Docker存储驱动 1. Docker存储驱动历史 Docker目前支持的greph driver包括: AUFS device-mapper btrfs overlayfs(重点) 关于各存储驱的 ...
- mysql字符设置
MySQL字符集设置 mysql>CREATE DATABASE IF NOT EXISTS mydb default charset utf8 COLLATE utf8_general_ci; ...
- Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN相比,对容器尤其是 Docker的支持更 ...
- find命令 参数
记一下我遇到过的: 中 !表示否定 -a 表示并且 -o 或者 perm注意权限模式,有无 -,单表含义不同,有-是表示属主.组.其他组权限对应(即某位为0时,表示不指定要匹配的权限,而不是没有 ...
- 关于服务器的CPU的几个概念学习总结
物理CPU 物理CPU: 物理CPU是指插在主板上面的CPU芯片.即指在主板上肉眼能看到的CPU的个数.一般而言,个人台式机或笔记本上只会有一个物理CPU芯片.而服务器主板上往往有多个物理CPU. L ...