Office(Excel、Word)二次开发——VSTO

Office(Excel、Word)二次开发——VSTO

Office二次开发模式:

1) VBA(visual studio for application),功能有限,语言落后。

2) .net2003中的对象模型(com组件,excelobject 11 library)功能强大,需手动操作。

3) vs.net2005中的vsto(visual studiotool for office)    VSTO方便快捷功能强大。

2).net的com 组件(vsto原形)

①vsà新建项目àC#àwindows应用程序

②解决方案,项目,添加引用àcom中Microsoft Excel 11.0 Object Library

③using Microsoft.Office.Interop.Excel;

④写代码,调试。

Office PIA: Microsoft.Office.Interop.Excel.dll,还有~access.dll,~word.dll。Microsoft.Office.Core等。PIA是在安装Office的时候选择安装的,而且必须有.NET Framework才能用

3)vsto,就是对PIA的二次封装。

vsto三类:插件(Add-in),文档级别(如ExcelWorkbook)和模版(Template)。

插件(Add-in):外接程序是应用程序级别,对所有Excel应用都是有效

文档和模板项目:文档级别的程序,只对当前文档和模板有效

本人开发环境:VS2010、Office2013、.Net Framework3.5

外接程序步骤:

1.新建项目->VisualC#->Office->2007-> Excel 2007外接程序(Excel 2007Add-in),Framework3.5

属性à调试à启用外部程序D:\ProgramFiles (x86)\Microsoft Office\Office15\EXCEL.EXE

2、卸载插件:①vs右键解决方案——>清理,②excel开发工具选项卡——>COM插件--移除

1、VSàExcel 2010 Workbook(Excel工作簿)项目,

2、提示:是否允许创建的项目访问VBA项目系统,点击“Ok”

Excel Workbook步骤:

UI设计参考:基于VSTO的Office二次开发c#.docx

Excel UI:任务窗体(Task Pane)、选项卡Ribbon、上下文菜单(右键)

2、在Excel里创建一个功能区Ribbon(VisualDesigner)

数据处理:用Access比较合适,因为SQL server太大,不适合用在excel上,另外,如果数据大时用excel太慢。所以结合access进行数据库处理是关键。连接数据库用ado.net 既可以连access,到时候还可以换sqlserver。

读取excel数据:

0)Linq To Excel:简单,开源,支持linq,但只能读,不能写。类似还有LinqToXml

1)、OLEDB快但不灵活(ado.net好像就建立在这之上),大量重复数据运算用,不改格式,只要数据。相当于当数据库用,可以直接换成access,可以用sql语句。

2)、com组件灵活但慢(Interop.Excel,就是vsto原形,客户端必须有excel,基于单元格读取慢),少量数据用,而且有格式。

如果用com,尽量读取一个区域range[“B5:H200”],不要一个单元格一个单元的读取。

。。以下不推荐。。

3)、NOPI,快,灵活,上海人开发的组件,特殊功能收费,可能会不支持最新版excel,1m大小的dll,麻烦

4)、将Excel文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)。

5)、OpenXml SDK组件,据说速度不快

部署发布

1、Vsto4之前的发布需要新建一个setup的安装文件,其他项目类型à安装和部署àVisualStudio Installerà安装项目、à属性,签名,选择强名称密钥文件—>生成安装文件à在解决方案上右键->发布à会在目标文件夹生成三个文件(setup.exe、AddIn.vsto、Application Files文件夹)à 将其打包给最终客户

2、卸载加载项

如果是自己本机做测试可以直接删除注册表

在注册表中HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\中找到outlookVSTO将其删除就可以卸载掉加载顷

客户则可以像卸载其它应用程序一样卸载

vs官方:

VS VSTO Office
  2003 2003
2005 2005 03
  2005SE 03、07部分
2008 2008 07
2010   07/10
2012   10/13
2013   10/13
2015   10/13/16

总结:office03已经淘汰不用管,建议用vs2010开发Office 07/10,vs2015可以开发10、13,16的不成熟。支持office10的最多。

参考资料:

推荐:①新一代 NET Office开发指南Excel篇2006年,P465,C#(framework2,office2003,vs2005)

可不看:②VSTO开发者指南            VB写的,只看开发环境

vsto论坛 :http://club.excelhome.net/forum-151-2.html

微软官方:http://msdn.microsoft.com/library/cc668205.aspx

Office(Excel、Word)二次开发——VSTO的更多相关文章

  1. microsoft office powerpoibt automation 二次开发

    背景 首先office的产品powerpoint是支持二次开发的,这里的二次开发并不是指在powerpoint产品中嵌入一些自己的控件,而是一些简单的automation的控制(进入放映状态,上一页, ...

  2. Office系列---将Office文件(Word、PPT、Excel)转换为PDF文件,提取Office文件(Word、PPT)中的所有图片

    将Office文件转换为PDF文件,提取Office文件中的所有图片 1.Office系列---将Office文件(Word.PPT.Excel)转换为PDF文件 1.1 基于Office实现的解决方 ...

  3. Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld

    Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述———— 隐鹤  /  HelloWorld 1. 引言 自本人第一篇博文“Excel阅读模式/单元格行列指示/聚光灯开发技术要 ...

  4. 使用RMS API 自定义Office(Word、Excel、PPT)加密策略

    什么是RMS: Microsoft Windows Rights Management 服务 (RMS),是一种与应用程序协作来保护数字内容(不论其何去何从)的安全技术,专为那些需要保护敏感的 Web ...

  5. jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...

  6. Aspose office (Excel,Word,PPT),PDF 在线预览

    前文: 做个备份,拿的是试用版的 Aspose,功能见标题 代码: /// <summary> /// Aspose office (Excel,Word,PPT),PDF 在线预览 // ...

  7. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  8. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  9. Office系列(1)---将Office文件(Word、PPT、Excel)转换为PDF文件

    需求: 将Office文件作为文章并在网页上预览,主要为(Word.PPT.Excel)3种类型文件. 研究了一下,找到了两种解决方案 直接调用微软的在线预览功能实现(预览前提:预览资源必须可以直接通 ...

随机推荐

  1. codevs 1038 一元三次方程求解 NOIP2001提高组

    题目链接:http://codevs.cn/problem/1038/ 题解: 嗯,exm?才知道二分隶属搜索专题…… 对-100到100枚举,按照题目中的提示,当当fi*fi+1<0时,二分深 ...

  2. 零基础学php的自学

    我们都知道,php语言作为一种专业建站的语言,没有华而不实,而是经受住了时间考验,成为一种值得学习的语言.现在国内众多的php学校也说明,php语言在当今有着广泛的市场需求. 那么零基础的同学如何学习 ...

  3. agc016D - XOR Replace(图论 智商)

    题意 题目链接 给出两个长度为\(n\)的数组\(a, b\) 每次可以将\(a\)中的某个数替换为所有数\(xor\)之和. 若\(a\)数组可以转换为\(b\)数组,输出最少操作次数 否则输出\( ...

  4. 14:django 用户认证系统

    django认证系统包含三个部分:用户.权限和分组 安装 django项目默认启用了认证系统,如果不是使用django-admin.py创建项目的可以通过在settings配置文件里面的INSTALL ...

  5. C#进行Socket通信编程之一

    关于Socket编程的相关资料(含实例)在网上多如牛毛,而我写这篇文章的初衷仅仅是为了记录自己的一些心得体会. Socket提供了这样一个接口,可以方便地使程序员通过其来发送和接收网络上的数据.在利用 ...

  6. 三:ZooKeeper的ZAB协议

    一:ZAB协议概述--->ZooKeeper并没有完全采用Paxos算法,而是使用了一种称为ZooKeeper Atomic Broadcast(ZAB,zookeeper原子消息广播协议)的协 ...

  7. Ubuntu 16.04 apt-get搭建LAMP环境

    本文重点介绍在Ubuntu中使用apt-get安装LAMP(Ubuntu 16.04,Apache2.4.18,mysql5.7.12,php7.0.4)环境,所以不再介绍如何安装Ubuntu. 安装 ...

  8. 【笔试题】精选30道Java笔试题解答

    转自于:精选30道Java笔试题解答 精选30道Java笔试题解答 1. 下面哪些是Thread类的方法() A. start() B. run() C. exit() D. getPriority( ...

  9. SpringMVC组件配置

    web.xml . springmvc-servlet.xml 配置SpringMVC四大组件. web.xml 配置前端控制器:前端控制器就是个servlet <!-- 配置前端控制器 --& ...

  10. vue-music 关于Search(搜索页面)-- 搜索历史

    搜索历史展示每一次搜索过,并选中的关键字,保存数据到数组.搜索历史数据是需要在多个组件中共享的,所以保存在vuex 中 searchHistory 数组中,保存触发在搜索列表点击选中之后派发事件到se ...