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插件的更多相关文章

  1. vsto下开发wps插件

    我们要开发wps插件了.之前用vsto开发过word插件,我也讲过c#下如何开发wps插件(有点繁琐).如果采用c#从头再开发wps插件,那么开发出来的office加载项就会出现两个.我们要实现的wp ...

  2. c#开发wps插件(3)部署

    上一篇,我们完成了具体的开发工作,但是最终必须得部署到客户机器上.所以,部署方面,我花费了一些时间去研究,现在总结下.上一篇中,我为什么建议开发人员安装wps专业版呢?因为装了专业版,方便我们开发,安 ...

  3. c#开发wps插件(2)

    上一篇,我们谈了插件开发原理,现在该是应用原理的时候了.工欲善其事必先利其器,首先安装wps 2016专业版,然后再开发. 第一步:打开vs2010,新建一个类库项目,项目结构如下: 说明:其中Res ...

  4. Excel催化剂开源第32波-VSTO开发的插件让WPS顺利调用的方法-注册表增加注册信息

    VSTO插件开发完成后,鉴于现在WPS用户也不少,很多时候用户没办法用OFFICE软件,只能在WPS环境下办公,VSTO开发的插件,只需增加一句注册表信息,即可让WPS识别到并调用VSTO开发的功能, ...

  5. 教你开发jQuery插件(转)

    教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文: ...

  6. 自己动手开发jQuery插件

    因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就蛋疼菊紧的人来说,一天时间8小时,保守估计有5个小时在 ...

  7. Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN

    Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN.NET http://blog.csdn.net/borishuai/article/details ...

  8. python开发vim插件

    [python开发vim插件] 按如下方式使用python开发vim插件,注意调用时使用的是exec. 但在函数中嵌入python代码更为简便,如下: python如何传递参数给python: 代码头 ...

  9. C#开发BHO插件UrlTrack

    最近忽然突发奇想,想统计一下我最经常上的网站是哪些,并且在这些网站上都停留了多久.为此决定写一个BHO插件来做这件事. BHO(Browser Help Objects)是实现了特定接口(IObjec ...

随机推荐

  1. 【ASP.NET Core】处理异常(下篇)

    上一篇中,老周给大伙伴们扯了有关 ASP.NET Core 中异常处理的简单方法.按照老周的优良作风,我们应该顺着这个思路继续挖掘. 本文老周就不自量力地介绍一下如何使用 MVC Filter 来处理 ...

  2. 【netty这点事儿】ByteBuf 的使用模式

    堆缓冲区 最常用的 ByteBuf 模式是将数据存储在 JVM 的堆空间中. 这种模式被称为支撑数组(backing array), 它能在没有使用池化的情况下提供快速的分配和释放. 直接缓冲区 直接 ...

  3. vue子组件向父组件传值

    vue2.0中通过$emit事件在子组件中自定义事件,通过操作子组件中的事件,向父组件传递参数: 首先写一个叫做parentComp.vue的父组件: <template> <div ...

  4. ch11 持有对象

    Java集合的基本类型:List.Set.Queue.Map 使用容器时若未指定泛型参数ArrayList apples=new ArrayList();,则容器中所有元素都为Object类型,使用时 ...

  5. B2B2C商品模块数据库设计

    kentzhu: 在电子商务里,一般会提到这样几个词:商品.单品.SPU.SKU 简单理解一下,SPU是标准化产品单元,区分品种:SKU是库存量单位,区分单品:商品特指与商家有关的商品,可对应多个SK ...

  6. DxPackNet 4.保存音视频为本地avi文件

    捕获到了音视频后要保存到本地文件,这是很常见的应用场景,DxPackNet保存视频文件也比较简单 用 IAviStreamWriter  avi文件写入流即可 1.初始化相关设备,设定好数据捕获的回调 ...

  7. python高阶函数式编程

    from functools import reduce def str2int(s): def fn(x, y): return x * 10 + y def char2num(s): return ...

  8. LitePal——Android数据库框架完整使用手册

    LitePal for Android LitePal是一个开源的Android库,使开发人员使用SQLite数据库非常简单.您无需编写任何SQL语句就可以完成大部分数据库操作,包括创建或升级表,增. ...

  9. GIT 查看 删除 添加远程库

    查看远程库 $ git remote -vorigin https://github.com/autoliuweijie/MachineLearning.git (fetch)origin https ...

  10. MAVEN自动发布更新本地和远程仓库

    1.本地仓库 的更新 mvn  clean package install  2.远程 仓库 的更新 mvn clean package deploy 2.1工程文件pom.xml的设置 <bu ...