您好,欢迎访问三七文档
第40章VisualStudioToolsforOfficeVisualStudioToolsforOffice(VSTO)技术可以使用.NETFramework定制和扩展MicrosoftOffice应用程序和文档,它包含的工具还可以使这个定制在VisualStudio中更容易完成,例如用于Officeribbon控件的可视化设计器。VSTO是微软公司发布的一系列产品中的最新产品,可以定制Office应用程序。用于访问Office应用程序的对象模型已经随时间逐步演化了。如果读者过去曾使用过它,就会熟悉它的某些部分。如果读者以前为Office应用程序编写过VBA插件,就为本章讨论的技术做好了准备(VSTO可以与VBA交互操作)。但VSTO通过OfficePrimaryInteropAssemblies(PIAs)提供的、与Office交互的类已经扩展到Office对象模型之外。例如,VSTO类包括.NET数据绑定功能。在VisualStudio2008推出之前,VSTO一直是一个独立下载的软件包,如果要开发Office解决方案,就可以得到它。在VisualStudio2008中,VSTO集成到VisualStudioIDE中。VSTO的这个版本也称为VSTO3,包含了对Office2007的全部支持,还包括许多新特性,例如可以与Word内容控件交互,前面提及的ribbon可视化设计器、VBA集成等。本章不需要VSTO或其以前版本的任何预备知识。内容如下:●可以用VSTO创建的项目类型,在这些项目中可以包含的功能●应用于所有VSTO解决方案类型的基础技术●如何建立带定制UI、VBA交互操作功能和ClickOnce部署功能的VSTO解决方案40.1VSTO概述VSTO包含如下组件:●一组项目模板,可用于创建各种类型的Office解决方案●设计器,支持ribbons、动作面板和定制任务面板的可视化布局●建立在OfficePrimaryInteropAssemblies(PIAs)基础之上的类,它们还提供了扩展功能VSTO支持Office2003和2007版。VSTO类库有两种形式,各用于这两种Office版本,它们分别使用不同系列的程序集。由于它们比较简单(且功能集很丰富),所以本章主要介绍2007版。VSTO解决方案的一般体系结构如图40-1所示。图40-140.1.1项目类型图40-2显示了VisualStudio中的项目模板。图40-2提示:使用VSTO模板创建项目时,需要具备对VBA项目系统的访问权限。这是与VBA交互所必须的。VSTO项目模板可以分为如下类别:●文档级的定制●应用程序级的插件●SharePoint工作流模板●InfoPath窗体模板一些项目类型有2003和2007版,但这里只介绍2007版。本章主要讨论最常用的项目类型,即文档级的定制和应用程序级的插件。1.文档级的定制创建这种类型的项目时,会生成一个链接到单个文档上的程序集,例如Word文档、Word模板或Excel工作簿。加载该文档时,关联的Office应用程序会检测到定制,加载程序集,使VSTO定制可以使用。这类项目可以给某个业务线上的文档提供额外的功能,或者在文档模板中添加定制功能,为这类文档添加额外功能。所包含的代码可以操作文档和文档的内容,包括内嵌的对象。还可以提供定制菜单,包括可以用VisualStudioRibbon设计器创建的ribbon菜单。创建文档级的项目时,可以选择创建新文档,或者复制已有的文档,作为开发的起点。也可以选择要创建的文档类型。例如,对于Word文档,就可以选择创建.docx(默认)、.doc或.docm文档(.docm是支持宏的文档)。其对话框如图40-3所示。图40-32.应用程序级的插件应用程序级的插件不同于文档级的定制,因为前者可用于整个目标Office应用程序。我们可以访问插件代码,其中可以包含菜单、文档操作等,而无论加载什么文档。启动某个Office应用程序如Word时,它会寻找已在注册表中有数据项的关联插件,并加载需要的程序集。3.SharePoint工作流模板这些项目提供了创建SharePoint工作流应用程序的模板。它们用于管理SharePoint进程中的文档流。创建了这类项目后,就可以在文档的生存期中,在重要的时刻执行定制代码。4.InfoPath窗体模板这是用于InfoPath窗体的文档级定制的一种形式,但它们给Word和Excel文档定制使用略微不同的方法,所以通常要分为不同的类别。可以为InfoPath窗体创建模板,扩展InfoPath设计器的功能,为InfoPath窗体的设计人员和终端用户提供额外的功能和业务逻辑。创建InfoPath窗体模板时,可以利用向导指定要创建的项目类型,如图40-4所示。图40-4在图40-4中,这个向导为所创建的窗体提供了很大的灵活性:可以选择许多不同的起点(包括SharePoint站点上的窗体)。还可以创建完整的窗体或模板部分,把功能限制为与浏览器兼容的功能。40.1.2项目特性在各种VSTO项目类型中有几个可以使用的特性,例如交互面板和控件。我们使用的项目类型决定了可用的特性。表40-1根据项目类型列出了这些特性。表40-1特性说明动作面板动作面板是保存在Word或Excel的动作面板中的对话框。可以在这里显示任意控件,这是扩展文档和应用程序的一种万能方式数据高速缓存数据的高速缓存可以在文档外部的高速缓存数据孤岛上存储在文档中使用的数据。这些数据孤岛可以从数据源中更新或手工更新,在数据源脱机或不可用时,允许Office文档访问数据VBA代码的端点如前所述,VSTO支持与VBA的交互操作。在文档级的定制中,可以提供从VBA代码中调用的端点方法主机控件主机控件是Office对象模型中已有控件的扩展封装器。可以操作这些对象,与它们建立数据绑定智能标记智能标记是嵌入在Office文档中、有类型化内容的对象。它们在Office文档的内容中自动检测,例如,应用程序检测到相应的文本时,就会自动添加股票报价智能标记。可以创建自己的智能标记类型,定义可以在该标记上执行的操作可视化文档设计器处理文档定制项目时,要使用Office对象模型创建一个可视化的设计界面,以交互式地布置控件。设计器中显示的工具栏和菜单(如本章后面所述)具有全面的功能应用程序级的插件特性特性说明定制任务面板任务面板一般位于Office应用程序的一个边界上,提供了各种功能。例如,Word的一个任务面板用于操作样式。与动作面板一样,它们也提供了很大的灵活性跨应用程序的通信为某个Office应用程序创建了插件后,就可以把这个功能提供给其他插件。例如可以在Excel中创建一个财务计算服务,再在Word中使用该服务——无需创建一个单独的插件Outlook窗体区域可以创建在Outlook中使用的窗体区域所有项目类型可用的特性特性说明ClickOnce部署可以通过ClickOnce部署方法把自己创建的任意VSTO项目发布给终端用户,让用户检测对应用程序的程序集清单的变化,拥有文档级和应用程序级解决方案的最新版本Ribbon菜单Ribbon菜单在所有的Office应用程序中使用。VSTO提供了创建定制ribbon菜单的两种方式,可以使用XML定义ribbon,也可以使用Ribbon设计器,后者更容易使用,但采用XML版本可以保证向后兼容性40.2VSTO基础知道了VSTO包含的内容,下面该看看VSTO的特殊一面了,并学习如何建立VSTO项目。本节介绍的技术可以应用于所有的VSTO项目类型。本节介绍如下内容:●Office对象模型●VSTO命名空间●主机项和主机控件●基本VSTO项目结构●Globals类●事件处理40.2.1Office对象模型Office应用程序的2007套装通过一个COM对象模型提供其功能。可以在VBA中直接使用这个对象模型,来控制Office功能的任意方面。Office对象模型在Office97中引入,之后有了许多演变,Office中的功能也有许多改变。Office对象模型有数量巨大的类,其中一些类在Office应用程序的套装中使用,一些类专门用于某些应用程序。例如,Word2007对象模型包含Documents集合,它表示当前加载的对象,每个对象都用一个Document对象表示。在VBA代码中,可以根据名称或索引访问文档,调用方法对它们执行操作。例如,下面的VBA代码关闭了名称为MyDocument的文档,且不保存修改的内容:Documents(MyDocument).CloseSaveChanges:=wdDoNotSaveChangesOffice对象模型包含命名的常量(例如上面代码中的wdDoNotSaveChanges)和枚举,更便于使用。40.2.2VSTO命名空间VSTO包含一个命名空间集合,该集合包含的类型可用于给Office对象模型编写程序。这些命名空间中的许多类和枚举直接映射到Office对象模型中的对象和枚举上。它们可以通过OfficePIAs访问。VSTO还包含不能直接映射的类型,或者与Office对象模型无关的类型。例如,有许多类用于VisualStudio中支持的设计器。封装了Office对象模型中的对象或与它们通信的类型分别放在不同的命名空间中,这些命名空间包含了用于Office2003和2007的类型。用于Office2007开发的命名空间如表40-2所示。表40-2命名空间说明Microsoft.Office.CoreMicrosoft.Office.Interop.*这些命名空间包含PIA类的瘦封装器,所以提供了处理Office类的基本功能。在Microsoft.Office.Interop命名空间中有几个嵌套的命名空间,用于每个Office产品Microsoft.Office.Tools这个命名空间包含的基本类型提供了VSTO功能和用于嵌套命名空间中的许多类的基类。例如,这个命名空间包含了实现文档级定制中的动作面板所需的类,以及应用程序级插件的基类Microsoft.Office.Tools.ExcelMicrosoft.Office.Tools.Excel.*这些命名空间包含的类型用于与Excel应用程序和Excel文档交互Microsoft.Office.Tools.Outlook这个命名空间包含的类型用于与Outlook应用程序交互Microsoft.Office.Tools.Ribbon这个命名空间包含的类型用于处理和创建Ribbon菜单Microsoft.Office.Tools.WordMicrosoft.Office.Tools.Word.*这些命名空间包含的类型用于与Word应用程序和Word文档交互Microsoft.VisualStudio.Tools.*这些命名空间提供的VSTO基础体系可以在VisualStudio中开发VSTO解决方案时使用40.2.3主机项和主机控件主机项和主机控件是扩展文档级定制的类,使之更容易与Office文档交互。这些类简化了代码,因为它们提供了.NET样式的事件,且进行了全面的管理。主机项和主机控件中的主机表示,这些类封装和扩展了通过PIAs访问的内部Office对象。在使用主机项和主机控件时,常常需要使用底层的PIA交互操作类型。例如,如果创建了一个新的Word文档,就会接收到对交互操作Word文档类型的引用,而不是Word文档主机项。必须注意这一点,并据此编写代码。Word和Excel文档级定制都有主机项和主机控件。1.WordWord只有一个主机项Microsoft.Office.Tools.Word.Document。这表示一个Word文档。这个类有许多方法和属性,可用于与Word文档交互。Word有12个主机控件,如表40-3所示,所有主机控件都在Microsoft.Office.Tools.Word命名空间中。表40-3控件说明Bookmark这个控件表示Word文档中的一个位置,它可以是
本文标题:分享(C#高级编程第6版doc):第40章 Visual Studio Tools for Offi
链接地址:https://www.777doc.com/doc-5472811 .html