VSTO 3.0 For Office 2007 Programming | 完美Exce...

来源:百度文库 编辑:神马文学网 时间:2024/04/20 02:23:50

完美Excel

本类文章的标签为 ‘VSTO 3.0 for Office 2007 Programming’


初识VSTO

2009年11月2日, 2:14 下午 (1 人投票, 平均: 5.00 out of 5)
 Loading ...

VSTO是一个框架,是Microsoft Office解决方案的一种工具。使用VSTO和托管代码,开发者能够创建Office解决方案。下面将主要介绍:

  • 什么是Microsoft VSTO
  • 为什么需要VSTO 3.0
  • 与旧版本相比,VSTO 3.0中添加的新特征
  • VSTO的结构及工具的方式
  • 基本配置——系统需求,安装,等等
  • VSTO如何与Visual Studio 2008整合,及其完整的设计和调试特征
  • VSTO下一个版本的新特征,VSTO将来如何进一步改进

VSTO帮助你创建文档级的解决方案,专门面向指定的文档;还可以通过使用应用程序级的加载项,创建应用程序级的解决方案。应用程序级加载项可以被特定应用程序所处理的所有文档访问。
什么是Microsoft VSTO?
VSTO是Microsoft Office解决方案开发的平台,建立在.NET框架之上,最新版本是3.0。从VSTO 3.0开始,开发者已经将Office客户端整合到Visual Studio设计器和自身对象模型之上的.NET层里。

上图表现了VSTO是如何被整合到Visual Studio 2008环境中的。
Office解决方案是为Microsoft Office应用程序开发的一种解决方案,包括Word、Excel、InfoPath、Access或PowerPoint。在VSTO的帮助下,开发者能够使用托管代码创建Office解决方案。
托管代码是在.NET框架通用语言运行时管理下执行的程序代码。任何编程语言的程序都能够使用托管或非托管代码编译。在.NET框架中创建的代码是托管代码。与VBA相比,托管代码更容易部署VSTO解决方案。
与VSTO不同,VBA不支持编程语言,而VSTO完全支持编程语言创建Microsoft Office解决方案。VSTO帮助你创建可靠且安全的Office应用程序解决方案。所有VBA脚本将被存储在所编程的文档里,而VSTO带来了新的概念,即文档级的解决方案和应用程序级的解决方案。
使用VSTO,Office开发者能够创建加载项解决方案。加载项是额外的程序组件,通过使用VSTO能够将其添加到Office应用程序中。例如,Microsoft为Office 2007授权用户提供了一些自由的加载项,如Microsoft Save as PDF or XPS,能够使文档以PDF或XPS格式保存。也可以定制现有的Office应用程序功能。如果需要单击按钮后保存或导出Word 2007或Excel 2007中所有的内容,那么可以使用VSTO创建加载项来实现。这是可以在Office解决方案开发中使用VSTO加载项的一种情形。
在VSTO之前,Office开发者必须使用VBA、VB6或者C++创建共享的COM加载项。所有加载项共享相同的地址空间,如果一个失败,宿主应用程序或所有其他的加载项将崩溃。与VSTO不同,VBA代码直接编写在Office应用程序的IDE中并且在运行时被编译,所有VBA脚本被存储在编写程序的文档内部。在VSTO中,这被称作文档级的解决方案,这种解决方案指向发布的专门文档。同样,在VSTO中,文档级加载项被交付给特定的文档。例如,假设在特定的Word文档包括了函数,那么该函数仅当打开该特定的Word文档时可用。
VSTO引入了一个称作应用程序级解决方案的新概念。使用应用程序级解决方案,特定应用程序处理的所有文档都能够访问该解决方案。通过使用应用程序级加载项来创建应用程序级解决方案。
VSTO提供了两种完全支持的编程语言创建在所有Office应用程序中运行的Office解决方案,C#、VB.NET或XML。作为一名VSTO程序员,需要具有C#的基础知识,使用C#编写Office应用程序。此外,还应该了解XML的基础知识。
在大多数Office 2007应用程序中,Microsoft使用XML作为数据和UI处理的标准格式。例如,InfoPath形状以XML格式保存数据。C#带给你对XML和Office应用程序极好的编程支持。Office已经有内置的基于XML定制模型的支持,VSTO完全可以利用。使用C#类和简单的XML,VSTO简化了.NET、服务器和Office系统之间的连接。

  • VSTO利用了两种强大的技术——C#和XML。C#是Microsoft .NET框架支持的最强大的编程语言之一。
  • VSTO完全支持使用C#和VB.NET编程语言为Office 2007应用程序编写代码。
  • 作为VSTO程序员,如果使用C#编写Office应用程序,则需要具备C#的基础知识。

此外,VSTO还提供了数据缓存功能。
为什么需要VSTO 3.0?
对于Office解决方案开发来说,VSTO是简单但强大的框架。这个框架为每个Office开发者带来了许多令人惊叹的好处:窗体控件、类、安全性、服务器可测量性、面向对象特征、完整性、易发布,等等。
1、更安全的托管代码扩展
VSTO允许托管和非托管代码无缝地放在一起到相同的.NET程序集里,这允许开发者保留非托管代码而无须完全重写。带有链接或引用托管代码程序集的文档或工作簿被作为托管代码扩展。通过使用VSTO在Word或Excel中创建托管代码扩展,与宏相似但更安全。使用VSTO,能够创建仅需要装载数据的模板。
2、数据缓存
数据缓存,简单地说,就是在内存中存储数据以便于快速访问。Microsoft Office Word文档或Excel工作簿有一个隐藏的控件,称之为运行时存储控件(Runtime Storage Control),存储缓存的数据。VSTO提供数据缓存功能,使用C#中的ServerDocument类,通过应用程序外部到Office来操控数据缓存,无须访问Word或Excel对象模型。
3、自定义功能
使用可重复使用的类,VSTO 3.0提供极好的控制来自定义Office应用程序。不像VBA开发者,VSTO开发者不局限于VBA函数库。VSTO提供了相当广泛的类、对象和事件来创建Office商业解决方案。使用VSTO,开发者能够为Office应用程序自定义功能。这能够简单到在应用程序命令栏中添加按钮或自定义任务窗格,或者复杂到用于访问不同数据源的数据报表模板。
4、自定义用户界面
VSTO提供Windows窗体控件,帮助你为Office解决方案开发富用户界面(UI)。通过使用大量各种各样的控件集,VSTO开发者能够为用户创建丰富的数据视图。每种和每类Windows窗体控件都有自已的属性、方法和事件设置,适合不同的需要。
通过在文档和任务窗格里使用控件,VSTO使创建丰富的用户界面更容易。例如,可以创建一个活泼的按钮命令产生套用信函。又如,假设公司在其服务器上存储了数据内容,用户在处理文档时想从服务器中引用一些内容并且不想离开当前编辑的文档,使用VSTO可以使服务器内容在文档的任务窗格中可用而无须干扰用户当前的工作。
5、智能标记
智能标记是Office应用程序能够在文档里识别的字符串。启用智能标记,Word试图识别文档中某类数据,通过紫色的点划线来显示。单击智能标记,出现特定数据类型的可能操作的列表。VSTO给Office开发者提供了对象模型,可用于为文档和工作簿创建智能标记。
6、WPF支持
WPF能用于创建丰富的、具有吸引力的外观。在VSTO环境中可使用WPF。VSTO的可视设计器支持Windows窗体和WPF控件的使用。WPF为创建基于客户和基于网络的应用程序提供了可靠的编程模型,并且在商务逻辑和UI之间呈现清楚的分离。
7、可视化的设计器
VSTO为Office应用程序提供了可视化的设计器,例如Word 2007、Excel 2007,显示在Visual Studio IDE里。在Visual Studio IDE里创建窗体只需拖动并放置窗体到Office文档中。开发者能够访问Visual Studio IDE中的许多工具和功能,例如智能感知、拖放控件和数据源。VSTO也提供了Ribbon可视化设计器,用于通过使用简单的.NET应用程序编程模型自定义Office功能区和编程。
8、安全改进
VSTO安全模型包含从Office信任中心和Visual Studio Tools for Office运行时的广泛支持,帮助解决VBA代码通常涉及的安全问题。VBA安全模型有许多缺点,容易使用VBA开发许多病毒。为了安全地运行VBA宏,用户机器中必须设置安全性为高,并且使用数字签名。更重要的是,这些操作都需要用户手工执行。在VSTO 3.0中,已经修改了安全模型。VSTO创建了安全策略,每次创建工程时必需在计算机中运行和调试解决方案,在发布前签署程序集。
9、可维护性
为Office系统开发的VSTO解决方案更容易维护。更新已发布的解决方案,修改代码,以及更新单个的程序集将帮助更多的资源在相同文档的多个副本里做相同的事情。所有代码将驻留在程序集里。在使用宏时,脚本驻留在Office文档里,无论何时想更新代码,必须修改每一个包含代码的文档。使用VSTO 3.0,能够通过简单地修改代码和更新单个的程序集来管理应用程序级加载项,无须在相同文档的多个副本中做同样的事情。
VSTO 3.0的新功能
VSTO 3.0具有大量的新功能,也增强了现有的关键功能。下面列出在VSTO 3.0中可用的改进Office解决方案开发工作的一些关键的新功能:

  • 文档级的定制:文档级的定制是自定义驻留在单个文档里的解决方案。使用VSTO的文档级定制是新版VSTO中添加的关键功能之一。VSTO支持Word、Excel、InfoPath的文档级解决方案。

  • 应用程序级加载项:应用程序级加载项被创建为托管代码程序集,当相关的Office应用程序启动时将装载应用程序级加载项。VSTO 3.0提供了直接编程访问.NET对象和控件。
  • 功能区可视化设计器:功能区是组织相关命令的新方式。实际上,它们作为控件显示。可视化设计器提供高级工具并支持更容易地创建和设计自定义功能区。
  • 任务窗格:任务窗格帮助用户快速且更方便地访问信息。取决于用户的喜好,可以在Office应用程序用户界面中显示或隐藏任务窗格。

  • 窗体区域:窗体区域是自定义标准的Outlook 2007用户界面的新方式。例如,在Visual Studio 2008中,VSTO 3.0提供了基于Windows窗体的设计和开发环境。这允许Office开发者在单个的开发环境中设计和编码新的Outlook窗体区域,将大多数Windows窗体引入到Outlook的宿主环境中。
  • 工作流支持:VSTO提供可视化设计器支持开发者使用Visual Studio 2008创建工作流。一个向导选项用于创建工作流,并且直接将其赋值到发布位置。
  • SharePoint支持:VSTO中的新对象帮助开发者在Office应用程序中为SharePoint编程。可以使用VSTO扩展Office客户端应用程序,使用SharePoint Portal将它们整合到企业解决方案中,例如客户关系管理、供应链管理以及其他类似的应用程序。

  • 使用ClickOnce部署:ClickOcne部署技术允许基于Windows应用程序使用最小程度的用户交互来部署和运行。安全区将限制使用ClickOnce技术部署的应用程序的许可和操作。
  • Word内容控件:内容控件是容器,其中能放置特定类型的内容,例如日期、列表、图片或文本。

  • 富用户界面控件:能够创建带有丰富且容易访问的用户界面的Office解决方案。例如,可以创建带有Windows控件的任务窗格,和其它数据源交互数据。
  • 支持其他的Office应用程序。

VSTO架构
VSTO应用程序由Office应用程序和.NET程序集组成。

  • Office应用程序:VSTO公布了对象,使之更容易编写Office应用程序。包括扩充应用程序和处理应用程序使用的数据的对象。要理解的重点之一是Word和Excel编辑器提供了Word或Excel文档视图。使用这些编辑器,可以编辑和格式文档,就像直接在Office应用程序中操作一样。

  • .NET程序集:包含中间语言(IL)代码。描述程序的二进制信息的元数据存储在内存中,是.NET程序集的一部分。除了元数据信息外,程序集也有称作Manifest的专门的文件。Manifest包含程序集当前版本的信息。

VSTO架构的核心组件是文档级定制、应用程序级加载项和文档级的数据模型。VSTO的新架构允许编写和运行带有宏的Office应用程序。

上图表明Office 2007解决方案逻辑架构。VSTO能够使Office开发者为InfoPath、Word和Excel文档创建文档级定制,而对于Outlook、PowerPoint和Visio,VSTO不支持文档级定制。
VSTO提供了非常好的面向对象编程支持。VSTO提供了对C#编程语言的完全支持,允许在Office解决方案中执行面向对象编程。面向对象编程是一种软件编程方式,程序结构基于对象之间的交互,以执行任务。
VSTO的架构设计帮助Office开发者实现了应用程序和数据的分离,提供开发应用程序级解决方案的增强支持,并且公布了多种对象使Office开发者更容易编写Office应用程序。开发应用程序级和文档级的解决方案是VSTO中另一项架构改进。
开发方式
使用VSTO 3.0创建的解决方案类型分成两类:文档级解决方案和应用程序级解决方案。
1、面向文档的方式
面向文档的方式被专门设计为接触Word或Excel文档的核心并包含原先设计的文档不支持的信息。VSTO 3.0支持面向文档的方式创建Word、Excel和InfoPath。实际上,面向文档的方式提供指向非常特定任务的文档,不会影响到文档驻留的应用程序。
2、面向应用程序的方式
VSTO 3.0具有为Office 2007套件中所有的应用程序创建面向应用程序的方式的能力。可以创建和执行向Office应用程序中添加了各种功能和特征的加载项。
VSTO开发和部署
VSTO系统3.0运行时,运行Office 2007解决方案的首要需求,被内置到VSTO中。而VSTO 3.0被内置到Visual Studio 2008安装中。
使用VSTO创建Office应用程序
在Visual Studio 2008中包括VSTO,也就是说,Microsoft首次将Visual Studio 2008和VSTO 3.0绑在了一块。在VSTO 3.0中,Microsoft Office工具变得更加强大,因为Microsoft使Office开发环境对开发者更加友好,通过创建新的开发环境帮助开发者创建Office应用程序里的功能的解决方案。因此,Office开发者能够容易地创建解决方案,为他们的商务做更多工作,另一方面,重复使用Office应用程序中现有的可用功能,从而减少成本开支。
VSTO甚至可以整合现有的ERP系统,增进企业的成长。可以使用VSTO扩展Office客户端应用程序,将VSTO与SharePoint Portal整合来提供企业解决方案,例如Office商务应用程序,包括客户关系管理、供应链管理,等等。
1、VSTO开发环境
VSTO 3.0不是单独的安装包,当安装Visual Studio 2008时,VSTO 3.0将与其它的框架和所需的组件一起安装。
2、包(Package)
当安装Microsoft VSTO 3.0分发包时安装VSTO运行时。VSTO 3.0分发包是将Visual Studio 2008和.NET框架的功能和生产力带给建立在Office 2007应用程序中的商务解决方案的框架。

上图说明了VSTO的版本历史,以及各版本之间的一些主要的不同。当前版本的VSTO仅支持编程语言VB.NET和C#。我们期望VSTO的下一个版本能支持其它的编程语言。
3、Visual Studio整合
为了容易创建定制的用户界面,VSTO 3.0在Visual Studio里提供了Office应用程序的可视化表现。VSTO 3.0很好地与Visual Studio 2008整合在一起,为Office开发者提供了完整的开发和部署Office解决方案的工具。Visual Studio 2008能够使开发者创建可升级的Office商务应用程序、改变主要的Office UI特征、支持工作流、以及创建更容易的部署。
下面,看看Visual Studio 2008中Office 2007应用程序的典型的VSTO项目模板。

Visual Studio 2008已经打包了使用VSTO创建Office解决方案所需要的全部VSTO 3.0组件。当安装Visual Studio 2008时,所有相关的安装,包括VSTO 3.0的项目模板、Office开发引用和其它组件,都被安装并完全整合到新的Visual Studio 2008开发环境中。
4、创建VSTO解决方案
在开发和传递创新的Microsoft技术方面,Visual Studio 2008是非常快速、协同性好和灵活的,包括增强的语言和数据功能。Office 2007中支持的C#和VB.NET是增强的语言特性之一,并且容易与其它数据源交互数据,例如Microsoft SQL服务器,是数据特性之一。这些特性确保开发者能够快速地创建连接的应用程序,传递下一代软件实践,以及克服应用程序软件开发挑战。

上图表现了Office解决方案的开发环境。在图中,客户端代表开发环境机器,在Visual Studio 2008里面的VSTO 3.0代表VSTO整合在Visual Studio中,Office 2007客户端工具是Office应用程序,包括Word、Excel、InfoPath等,应该被安装在客户端机器上。
使用Visual Studio 2008开发环境能够创建应用程序级、数据中心解决方案。数据中心解决方案是集中于数据操作和数据存储的功能。
Visual Studio 2008开发环境使得开发带有主要的Office 2007系统特征设计时和运行时支持的解决方案成为可能,例如功能区、自定义任务窗格、文档级解决方案、Outlook窗体区域,等等。
功能区是Office应用程序中表现菜单项的新方式。在新开发环境中,有可视化设计器,能够拖拉功能区里的控件,容易设计自定义的功能区菜单。甚至数据相关的操作,例如创建数据连接,有数据连接向导容易创建数据连接。
在创建的Office项目解决方案中,可以看到列出的引用,例如System.AddIn、System.Core等等,它们被自动装载作为项目模块的一部分。这使得开发者更容易开始编程,不需要像以前一样手工添加引用和验证解决方案。
通过使用基于XML的数据/视图分离和编程性,Office开发者能够将商务数据整合到文档里。
5、查看IDE窗口
Visual Studio是一款极其优秀的产品,专门为开发者设计,是开发者最常使用的开发工具之一,内置有IDE,能够使开发者使用Microsoft技术创建不同类型的应用程序。通常,IDE由源代码编辑器、编译器和调试器组成。默认情况下,Microsoft Visual Studio IDE提供智能感知、调试、编译、访问控件、以及创建解决方案的能力。最新增强了功能区设计器、拖放控件、并为Office应用程序增强了调试功能,缩减了开发时间,提高了开发者的效率。
内置的VSTO对象模型被设计来支持.NET,许多常用的功能被打包且很好地整合了。在新版本中,诸如Word、Excel和InfoPath的目标窗口工具被直接整合到IDE界面里,帮助Office开发者无须对象模型的高级知识就能创建解决方案。对于Word 2007和Excel 2007,VSTO在Visual Studio IDE中也有可视化设计器。

上图中,可以看到Visual Studio 2008中如何显示Excel 2007可视化设计器。同样,Visual Studio 2008 IDE也提供了可视化功能区设计器,允许Office开发者使用拖放界面来设计功能区,使用标准的.NET代码与功能区交互。

上图显示Office解决方案开发里功能区的可视化设计器,通过提供拖放控件和容易访问资源,简化了功能区开发过程。同样,Visual Studio 2008简化并加速了操作窗格、指定文档的任务窗格、创建指定应用程序的自定义任务窗格以及Outlook窗体区域设计器的开发过程。
6、调试
调试是软件开发中最重要的任务之一,并且是所有开发者在他们的开发过程中会遇到无数次的一项任务。在Visual Studio IDE中,开发者为调试.NET应用程序有几种可用的调试选择。
Visual Studio 2008为使用VSTO 3.0的Office解决方案开发提供了一组强大的创建和调试工具,与VSTO 2.0相比是一项大的改进。在创建配置时,开发者能够选择他们想创建的组件,排除他们当前想避免创建的组件。开发者可以像项目一样,灵活地为解决方案创建配置。
我们期望下一版本能带来什么?
基于笔者的分析和作为一名VSTO开发者的经验,我们期望下一版本的VSTO:

  • 目前,VSTO 3.0支持VB.NET和C#开发Office解决方案。在将来的VSTO版本中,我们期望支持其他语言,例如C++,这将帮助C++开发者创建VSTO解决方案。
  • VSTO 3.0智能标记仅限于Office应用程序中文档级解决方案,不能在应用程序级解决方案中使用,因此我们期望Microsoft在将来的VSTO版本中添加这项功能。
  • 使用VSTO和Visual Studio环境在Office应用程序内创建工作流活动是我们在下一版本中期望的功能。数据和应用程序协同工作的能力是Windows工作流的核心,在VSTO中的改进将帮助我们重新组织面向工作流的开发。
  • 应该在将来的版本中在Visio应用程序中也添加使用VSTO创建文档级的自定义任务窗格的功能。这将对Visio用户管理自定义形状是有用的。

注:本文初译自《VSTO 3.0 for Office 2007 Programming》,有删节,仅供参考。不知道是作者想作最详细的介绍,还是其他什么原因,我觉得本章中有许多重复,且有前后不一致的地方,不过仍不失为一篇很好的全面介绍VSTO 3.0的文章。