VSTO之旅系列(一):VSTO入门

原文:VSTO之旅系列(一):VSTO入门

引言:

因为工作的原因,这段时间一直在看VSTO的相关的内容的,因此希望通过这个系列来记录下我学习的过程和大家分享Office开发的相关知识,希望以后有朋友从事这方面的也希望通过本系列提供点帮助。

本专题将简单介绍VSTO和VSTO中的一些基本概念进行介绍,下面就直接进入正题了。

 

1. VSTO介绍

首先介绍下VSTO的历史吧,之前都是用VBA来开发Office解决方案的,后来微软开发出了VSTO这个工具包来创建自定义的Office应用程序,使得开发Office应用程序更加简单,并且用VSTO来开发office应用程序可以使用Visual studio开发环境中的众多功能和CLR提供的内存管理,垃圾回收等功能。VSTO到现在有5个版本的,下面通过一张图来说明VSTO的发展过程:

通过上图简单介绍下VSTO的发展历程的,这里也就不多描述VSTO的历史了,只是让大家有个这样的认识,下面就具体介绍下什么是VSTO。

VSTO就是一个创建自定义Office应用程序的Visual Studio工具包,这个工具包里面提供了很多类库来让我们调用,然后工具包中类再与Office客户端进行交互。

打开VS2010后可以看到现在支持的一些模版,下面就是VS2010中支持模版的一张图片:

从图中可以看出创建的Office应用程序大致有三类:插件(Add-in),文档级别(如Excel Workbook)和模版(Template)。创建的Add-in和模版应用程序即应用程序级别的定制程序,它指的是对整个应用程序都可用。文档级别的应用程序指的是程序代码只关联到特定的文档二不是整个应用程序,然而需要注意的,文档级别的应用程序的代码并不像VBA程序那样存放在文档或模版里的,而是存放在项目的程序集中的。

2 主互操作程序集(PIA)的介绍

Office应用程序如Word,Excel和Outlook都是用非托管代码来写的, 而我们创建的VSTO工程使用的是托管代码,这时候就需要使用互操作程序集来与Office应用程序里的非托管COM对象交互,然后主互操作程序集(PIA)指的是官方发布的互操作程序集,如果电脑中安装了PIA,当你添加对类库的引用时,那么Visual Studio会自动加载PIA,微软为Office应用程序提供了PIA,如EXcel PIA就是Microsof.Office.Interop.Excel.dll,其他应用程序也类似。当安装了Office产品后,PIA会自动安装在电脑的GAC目录里,每当创建一个VSTO解决方案, Visual Studio会自动为该解决方案加载合适的Office PIA引用和其他程序集,具体PIA目录见下图:

如果安装完Office产品后没有安装相应的PIA到GAC,可以执行Office的安装程序进行修复。

 

3. 宿主项和宿主控件的介绍

 宿主项是表示Office对象模型入口点的。应用程序外接程序使用Microsoft.Office.Tools.AddIn类为宿主项,此宿主项提供对宿主应用程序和成员的对象模型的访问,可以通过宿主项添加数据绑定的能力和提供额外的事件来扩展本地Office文档。而创建一个Excel解决方案会创建4个Excel宿主项:Workbook,Sheet1,Sheet2和Sheet3,如下图:

宿主项是Word和Excel等设计界面,担当控件容器的作用,就像VBA里把控件添加到UserForm上一样,我们可以把Windows Form 控件和宿主控件添加到宿主项上,值得注意的是Workbook宿主项,它不作为宿主控件的容器,在工作簿宿主项中不能添加控件只能包含组件。

宿主项控件了Office的对象模型,它是基于本机Office对象的,本机Office对象使用的是Microsoft.Office.Interop.Word命名控件下定义的类型而宿主项和宿主控件定义在Microsoft.Office.Tools.Word(Excel)等命名控件下的。宿主控件与本机对象的功能类似,但是宿主控件扩展了本机对象,添加了数据绑定和事件等功能

 

4.总结

到这里本专题要介绍的内容已经讲完了,后面的专题将介绍利用VSTO来创建自定义的Office应用程序,如果大家有关于Office想实现的功能也可以在下面留言,后面通过学习也会和大家分享大家想要实现的功能,希望在这里我们一起讨论,一起进步。

 

 

时间: 2024-08-03 01:42:35

VSTO之旅系列(一):VSTO入门的相关文章

VSTO之旅系列(二):创建Excel解决方案

原文:VSTO之旅系列(二):创建Excel解决方案   本专题概要 引言 创建VSTO项目 Excel对象模型 创建Excel外接程序 创建Excel文档级自定义项 小结   一.引言 也许很多朋友都没有听说过VSTO这个东西的,本人之前也同样也不知道的,但是由于工作的原因接触了这方面,由于VSTO方面国内的资料比较少,本人刚开始学习的时候都是参考MSDN的,但是上面很多资料都是英文的,可能学习起来会比较慢点,所以本人把最近一段时间学习的内容记录下来,一来是作为一个巩固的学习笔记,二来希望这些

VSTO之旅系列(五):创建Outlook解决方案

原文:VSTO之旅系列(五):创建Outlook解决方案  本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结   一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案的,所以本专题中将为大家介绍下Outlook相关的内容.我们从Visual Studio 2010 中Office节点下的模板中我们可以看到,Outlook只有外接程序的模板,并没有提供像Word或Excel这样的文档级的模板,所以VSTO没有为Outlook解决方案创建宿主项和宿主控件(Ex

VSTO之旅系列(三):自定义Excel UI

原文:VSTO之旅系列(三):自定义Excel UI 本专题概要 引言 自定义任务窗体(Task Pane) 自定义选项卡,即Ribbon 自定义上下文菜单 小结   引言 在上一个专题中为大家介绍如何创建Excel的解决方案,相信大家通过从上面一个专题之后了解了Excel的对象模型,以及Office两种解决方案的,看完上一个专题之后,肯定很多朋友想为Excel自定义属于自己的UI界面,例如,有这样的一些疑问--是否可以使用VSTO来自定义选项卡呢? 是否可以自定义上下文菜单的呢?如果你也有这些

VSTO之旅系列(四):创建Word解决方案

原文:VSTO之旅系列(四):创建Word解决方案 本专题概要 引言 Word对象模型 创建Word外接程序 小结   一.引言 在上一个专题中主要为大家介绍如何自定义我们的Excel 界面的,然而在这个专题中,我将为大家介绍如何用VSTO来创建Word项目,对于Word的VSTO开发和Excel的开发很类似,你同样也可以为Word自定义界面的,他们的区别主要在于对象模型的不同,只要熟悉了Word的对象模型,操作Word也就很简单了.下面首先就开始介绍Word的对象模型的. 二.Word对象模型

我的VSTO之路(二):VSTO程序基本知识

原文:我的VSTO之路(二):VSTO程序基本知识 开始之前,首先我介绍一下我的开发环境:VS2010 + Office 2010,是基于.Net framework 4.0和VSTO 4.0.以下的范例代码都基于这个,如果你使用的是VS2008,那么问题也不大,基本可以移植过去.需要注意的是.Net framework 4.0中增加了dynamic类型和可选参数,而这两点新的特性在VSTO 4.0中被广泛使用,新特性的详细内容我就不介绍了,(其实介绍的地方很多,Google一下就可以了),移植

SharePoint 2013 图文开发系列之InfoPath入门

原文:SharePoint 2013 图文开发系列之InfoPath入门 本文主要介绍SharePoint 2013中,简单发布InfoPath表单,并添加后台代码,示例比较简单,主要描述的是一个创建InfoPath的过程,而非多么深奥的后台代码,希望能够给初学者带来帮助. 主要过程有 Ø  新建一个InfoPath表单 Ø  修改表单的信任级别并添加证书 Ø  发布到InfoPath得到管理员认证 Ø  设计InfoPath布局及添加控件,在代码中编辑,添加表单功能 Ø  发布表单到Share

Velocity魔法堂系列一:入门示例

一.前言   Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不同的平台上,如.Net的 NVelocity和js的Velocity.js,虽然各平台在使用和实现上略有差别,但大部分语法和引擎核心的实现是一致的,因此学习成本降低不少 哦.   最好的学习资源--官网:http://velocity.apache.org/   本系列打算采用如下结构对Velo

JUnit 5系列之基础入门介绍

上周我们刚刚搭建好了 JUnit 5 的环境,现在我们可以写测试了.这节就让我们来写它几个吧! 概述 本文章是这个 JUnit 5 系列的一部分: 环境搭建 基础入门 架构体系 扩展模型(Extension Model)  条件断言 注入 动态测试 ... (如果不喜欢看文章,你可以戳这里看我的演讲,或者看一下最近的 vJUG 讲座,或者我在 DevoxxPL 上的 PPT. 本系列文章都基于 Junit 5发布的先行版 Milestone 2.它可能会有变化.如果有新的里程碑(mileston

[Koa系列-1]简单入门

1.前言 很久之前就想学习koa,每次学习一般就被其他事情打断: 需要koa的过程,个人认为是这样的: 学习generator 学习promise 学习co的实现,以及koa的原理 开始学习koa搭建基本结构 整合其余服务器端组件 本系列就从第 4 步骤开始: 1.1.基本的示例 Step 1:创建index.js文件 创建一个新的空白文件夹,同时将下述代码存成index.js. var koa = require('koa'); var app = koa(); var str = ''; /