分享

Visual Studio Tools for Office (VSTO) 简介及资源整理

 wb7206 2017-10-06

之所以接触VSTO(Visual Studio Tools for Office )是因为接到一个公司的面试通知,需要测试你的学习能力,让自己以前没有做过这方面开发的情况下,基于VSTO对Excel进行二次开发,完成两个简单的task。由于网上这方面的资料相对较少,随把自己收集到的一些资料整理处理,希望能对大家有所帮助。


1. Office 编程

以前的Office编程一般都是通过VBA进行,VBA是一个很简单的开发环境,集成在很多Office的产品中。每个Office的产品,如Word,Excel,Outlook,都通过COM暴露了非常丰富的对象模型,供程序员编程。我们就是用VBA和这些Office的COM对象模型对Office进行扩展开发的。最常见的是增加一些自定义的按钮,还有自定义响应一些事件。但是VBA有很多不足之处。首先,它只面对VB脚本语言,并且开发环境显得简单,不够强大。最致命的是,VBA把代码分别嵌入到每个文档中去,这导致万一出现bug,或者项目需要升级时,就很难处理。需要对于每个文档进行修改,这种低效率在企业级应用中是无法容忍的。VBA的另一个问题:安全保护做得很薄弱,很多人可以利用宏制造病毒。

Microsoft想用Visual Studio .NET和.NET Framework来解决这些问题,所以VSTO应运而生。VSTO 将.NET对word,excel,outlook和infopath的支持加入到Visual Studio中。VSTO将word或excel文档转换成了能够进行编程的.NET类,使它们成为具有数据绑定功能的控件,我们可以像处理Window Forms控件和其他的.NET特征那样对其进行编码。


2. Office对象模型

几乎所有的office编程都会使用某个office应用程序对象模型,并对它进行编码。对象模型是一组由OFFICE应用程序提供的对象,正在运行的代码可用他们来控制office应用程序。每个office应用程序对象模型都按照层次结构进行组织,层次结构中的跟对象为“Application”。不能通过根对象Application直接访问其他对象,但可以通过转换路径访问。(word和excel对象模型的层次结构如下图)


3. OFFICE 主互调程序集(PIA, Primary Interop Assemblies)

.NET中与OFFICE交互的托管程序集被称为OFFICE主互调程序集(PIA)。

所有的OFFICE对象模型都是用非托管代码(C和C++)编写的,并提供COM接口。为了在托管代码(C#或VB)中与这些接口进行通信,我们必须使用封装器,通过它来实现托管代码与Office的非托管COM接口之间的协同工作。该封装器是一系列的.NET类,它们被编译成为PIA的程序集。


4. OFFIC属性Properties、方法Methods与事件Events。

值得注意的是Properties与Methods的区别:属性也有带参数的属性get/set方法,Methods也有不带参数的get/set方法,一个重大区别就是属性是“全局”的,你修改完会一直起作用,而方法一般只在当前会话生命期中才会有用。 此外属性一般只会创建只读属性,不会设置只写属性。若需要只写属性,一般用方法代替。





5. 资源列表:

1. 书籍类:

Visual Studio Tools for Office: Using C# with Excel, Word, Outlook, and InfoPath

Professional.VSTO.2005 --Visual Studio® 2005 Tools for Office



2. 代码类:

两个task的简单实例: 

http://download.csdn.net/detail/mason_mow/7269379



3. 相关博客:

VSTO 从零开始 http://www.cnblogs.com/felixfang/archive/2010/08/16/1800797.html

VSTO 简介与发展 http://blog.csdn.net/v_jzho/article/details/1806904

 VSTO之旅系列(一):VSTO入门 http://www.cnblogs.com/zhili/archive/2012/09/03/VSTO.html


4. 官方资源:

Walkthrough: Creating Your First Application-Level Add-in for Excel

How to: Add Chart Controls to Worksheets

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多