VSTO简介

转载 2011年11月08日 17:43:30

原文地址:http://blog.csdn.net/lanwilliam/article/details/5699753

当作科普读物,预习一下。


  最近有一家企业要做VSTO培训,由于我原来多少做过点VBA的开发,还算了解点Office开发模型,所以推不掉只能我来准备了,所以把准备过程中的内容做一下记录。

一、什么是VSTO?

   Visual Studo Tools for Office,是.net平台下的Office开发技术。如果你以前用过VBA的话就会比较好理解。VBA是在文件里面嵌入VBA代码,Office解析执行。现在大伙都用VS开发环境了吗,所以如果能在VS环境里面做开发就比较方便。当然,你可能说Com组件里面有一个Office的扩展啊,引用过来用就是了吗。当然,以前一直这样用的。但是现在微软给大家进一步开放了这个office模型,进一步扩展了Office开发空间,就提出了所谓的VSTO了。VSTO为中高级开发人员提供了更加强大的开发平台和语言,并部分解决了传统Office开发中的诸多问题(难于更新、可扩展性差、难以维护、安全性低等),开发人员可以使用熟悉的技术来构建更加灵活的、强大的、跨平台的企业级解决方案。

二、为什么要进行Office开发?

  首先作为普及度最高的办公软件,基本所有的人都会做一些office处理。当然应用最多的还是Excel出报表吧。里面的拖拽功能,还有函数,统计图功能都很好用。但是有一些复杂的逻辑操作,单纯用office提供的函数很难实现,vba也不好处理,那么知识后就可以用vsto了。拿C#实现会容易很多吧。当然这只是一点。能够用C#开发,自然也能够用ADO.net和WebService了,也就使得我们的报表文档,能够随时和web数据进行交互,够有吸引力了吧。设想下,当你想要做表单的时候,不需要再在web上录入了,只需要打开Excel录入表单数据(Excel里面好用的拖拽等功能当然随便溺用了哈),然后点下按钮,就把数据提交到Web服务器上去了,是不是方便很多?

三、Office开发简史 (转一部分概念性内容)

 

1、VBA(Visual Basic Application)

    微软提出的第一种Office开发解决方案就是VBA,在20世纪九十年代VBA红极一时,借助于当时如日中天的Visual Basic,VBA取得了巨大的成功,无论是专业的开发人员,还是刚入门的非开发人员,都可以利用VBA完成简单或复杂的需求。但是VBA本身拥有很多的局限性,VB语言虽然简单,但是其语法令中高级开发人员不太适应,尤其是VBA的开发环境过于简单,缺少与时俱进的高级功能,使得VBA开发陷入了瓶颈。

2、VSTO 1.0(VSTO 2003)

时光跨入21世纪,微软发布了.net平台,并推出了新千年的新语言:C#,VBA一统Office开发天下的情况终于有所转变。从Office 2003开始,Office正式由一个桌面办公平台转化为了桌面开发平台,微软也适时推出了VSTO 2003,即VSTO 1.0。正是由此开始,Office开发跨入了一个新的时代,开发人员可以使用更加高级的语言和熟悉的技术来更容易的进行Office开发。VSTO 1.0完全编程支持Office 2000和Office XP,提供了以文档为中心的开发平台,开发人员使用.net framework 1.1开发Office中的一些自动化程序等。

3、VSTO 2.0(VSTO 2005 SE) 

    VSTO 2.0随同Visual Studio 2005推出,提供了大量新特性:

  1. 提供了新的文档模板
  2. 对Word、Excel的可视化支持
  3. 可以使用托管的Windows Forms控件或组件
  4. 宿主控件(不知道翻译的怎样:))    
  5. 支持在文档中添加智能标签
  6. 动作面板支持
  7. 数据绑定、数据源、数据模型支持
  8. 数据缓存
  9. 服务器端编程
  10. 配置文件
  11. 新的部署方式
  12. InfoPath开始支持托管代码
  13. 与众不同的Outlook 托管插件

4、VSTO 3.0(VSTO 2008)

VSTO 3.0随同Visual Studio 2008发布:

对于Office解决方案开发来说,VSTO是简单但强大的框架。这个框架为每个Office开发者带来了许多令人惊叹的好处:窗体控件、类、安全性、服务器可测量性、面向对象特征、完整性、易发布,等等。
1)
、更安全的托管代码扩展
VSTO
允许托管和非托管代码无缝地放在一起到相同的.NET程序集里,这允许开发者保留非托管代码而无须完全重写。带有链接或引用托管代码程序集的文档或工作簿被作为托管代码扩展。通过使用VSTOWordExcel中创建托管代码扩展,与宏相似但更安全。使用VSTO,能够创建仅需要装载数据的模板。
2)
、数据缓存
数据缓存,简单地说,就是在内存中存储数据以便于快速访问。Microsoft Office Word文档或Excel工作簿有一个隐藏的控件,称之为运行时存储控件(Runtime Storage Control),存储缓存的数据。VSTO提供数据缓存功能,使用C#中的ServerDocument类,通过应用程序外部到Office来操控数据缓存,无须访问WordExcel对象模型。
3)
、自定义功能
使用可重复使用的类,VSTO 3.0提供极好的控制来自定义Office应用程序。不像VBA开发者,VSTO开发者不局限于VBA函数库。VSTO提供了相当广泛的类、对象和事件来创建Office商业解决方案。使用VSTO,开发者能够为Office应用程序自定义功能。这能够简单到在应用程序命令栏中添加按钮或自定义任务窗格,或者复杂到用于访问不同数据源的数据报表模板。
4)
、自定义用户界面
VSTO
提供Windows窗体控件,帮助你为Office解决方案开发富用户界面(UI)。通过使用大量各种各样的控件集,VSTO开发者能够为用户创建丰富的数据视图。每种和每类Windows窗体控件都有自已的属性、方法和事件设置,适合不同的需要。
通过在文档和任务窗格里使用控件,VSTO使创建丰富的用户界面更容易。例如,可以创建一个活泼的按钮命令产生套用信函。又如,假设公司在其服务器上存储了数据内容,用户在处理文档时想从服务器中引用一些内容并且不想离开当前编辑的文档,使用VSTO可以使服务器内容在文档的任务窗格中可用而无须干扰用户当前的工作。
5)
、智能标记
智能标记是Office应用程序能够在文档里识别的字符串。启用智能标记,Word试图识别文档中某类数据,通过紫色的点划线来显示。单击智能标记,出现特定数据类型的可能操作的列表。VSTOOffice开发者提供了对象模型,可用于为文档和工作簿创建智能标记。
6)
WPF支持
WPF
能用于创建丰富的、具有吸引力的外观。在VSTO环境中可使用WPFVSTO的可视设计器支持Windows窗体和WPF控件的使用。WPF为创建基于客户和基于网络的应用程序提供了可靠的编程模型,并且在商务逻辑和UI之间呈现清楚的分离。
7)
、可视化的设计器
VSTO
Office应用程序提供了可视化的设计器,例如Word 2007Excel 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支持WordExcelInfoPath的文档级解决方案。

     

  • 应用程序级加载项:应用程序级加载项被创建为托管代码程序集,当相关的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应用程序。包括扩充应用程序和处理应用程序使用的数据的对象。要理解的重点之一是WordExcel编辑器提供了WordExcel文档视图。使用这些编辑器,可以编辑和格式文档,就像直接在Office应用程序中操作一样。

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

VSTO架构的核心组件是文档级定制、应用程序级加载项和文档级的数据模型。VSTO的新架构允许编写和运行带有宏的Office应用程序。
上图表明Office 2007解决方案逻辑架构。VSTO能够使Office开发者为InfoPathWordExcel文档创建文档级定制,而对于OutlookPowerPointVisioVSTO不支持文档级定制。
VSTO
提供了非常好的面向对象编程支持。VSTO提供了对C#编程语言的完全支持,允许在Office解决方案中执行面向对象编程。面向对象编程是一种软件编程方式,程序结构基于对象之间的交互,以执行任务。
VSTO
的架构设计帮助Office开发者实现了应用程序和数据的分离,提供开发应用程序级解决方案的增强支持,并且公布了多种对象使Office开发者更容易编写Office应用程序。开发应用程序级和文档级的解决方案是VSTO中另一项架构改进。


开发方式
使用VSTO 3.0创建的解决方案类型分成两类:文档级解决方案和应用程序级解决方案。
1)
、面向文档的方式
面向文档的方式被专门设计为接触WordExcel文档的核心并包含原先设计的文档不支持的信息。VSTO 3.0支持面向文档的方式创建WordExcelInfoPath。实际上,面向文档的方式提供指向非常特定任务的文档,不会影响到文档驻留的应用程序。
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 2008VSTO 3.0绑在了一块。在VSTO 3.0中,Microsoft Office工具变得更加强大,因为Microsoft使Office开发环境对开发者更加友好,通过创建新的开发环境帮助开发者创建Office应用程序里的功能的解决方案。因此,Office开发者能够容易地创建解决方案,为他们的商务做更多工作,另一方面,重复使用Office应用程序中现有的可用功能,从而减少成本开支。
VSTO
甚至可以整合现有的ERP系统,增进企业的成长。可以使用VSTO扩展Office客户端应用程序,将VSTOSharePoint 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.NETC#。我们期望VSTO的下一个版本能支持其它的编程语言。


3
Visual Studio整合
为了容易创建定制的用户界面,VSTO 3.0Visual Studio里提供了Office应用程序的可视化表现。VSTO 3.0很好地与Visual Studio 2008整合在一起,为Office开发者提供了完整的开发和部署Office解决方案的工具。Visual Studio 2008能够使开发者创建可升级的Office商务应用程序、改变主要的Office UI特征、支持工作流、以及创建更容易的部署。
下面,看看Visual Studio 2008Office 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应用程序,包括WordExcelInfoPath等,应该被安装在客户端机器上。
使用Visual Studio 2008开发环境能够创建应用程序级、数据中心解决方案。数据中心解决方案是集中于数据操作和数据存储的功能。
Visual Studio 2008
开发环境使得开发带有主要的Office 2007系统特征设计时和运行时支持的解决方案成为可能,例如功能区、自定义任务窗格、文档级解决方案、Outlook窗体区域,等等。
功能区是Office应用程序中表现菜单项的新方式。在新开发环境中,有可视化设计器,能够拖拉功能区里的控件,容易设计自定义的功能区菜单。甚至数据相关的操作,例如创建数据连接,有数据连接向导容易创建数据连接。
在创建的Office项目解决方案中,可以看到列出的引用,例如System.AddInSystem.Core等等,它们被自动装载作为项目模块的一部分。这使得开发者更容易开始编程,不需要像以前一样手工添加引用和验证解决方案。
通过使用基于XML的数据/视图分离和编程性,Office开发者能够将商务数据整合到文档里。


5
、查看IDE窗口
Visual Studio
是一款极其优秀的产品,专门为开发者设计,是开发者最常使用的开发工具之一,内置有IDE,能够使开发者使用Microsoft技术创建不同类型的应用程序。通常,IDE由源代码编辑器、编译器和调试器组成。默认情况下,Microsoft Visual Studio IDE提供智能感知、调试、编译、访问控件、以及创建解决方案的能力。最新增强了功能区设计器、拖放控件、并为Office应用程序增强了调试功能,缩减了开发时间,提高了开发者的效率。
内置的VSTO对象模型被设计来支持.NET,许多常用的功能被打包且很好地整合了。在新版本中,诸如WordExcelInfoPath的目标窗口工具被直接整合到IDE界面里,帮助Office开发者无须对象模型的高级知识就能创建解决方案。对于Word 2007Excel 2007VSTOVisual Studio IDE中也有可视化设计器。

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

上图显示Office解决方案开发里功能区的可视化设计器,通过提供拖放控件和容易访问资源,简化了功能区开发过程。同样,Visual Studio 2008简化并加速了操作窗格、指定文档的任务窗格、创建指定应用程序的自定义任务窗格以及Outlook窗体区域设计器的开发过程。


6

 

上面转了一部分概念性内容,下面自己总结一下

总结一下VSTO大概最有用的功能。

1.做一些复杂报表(相信Excel用的最多),里面可以添加一些复杂逻辑,数据筛选,自定义函数(类似系统函数)。

2.与外部的数据同步功能,读取数据库数据生成报表,将报表数据修改同步回数据库。

3.开发一些小插件,例如可以对excel原始菜单进行扩展,添加自己的功能刀office中(plugin),个人感觉或许文档的一些审批流程可以用这种方式尝试一下。

4.基于Office平台推出一些扩展项目,例如基于Outlook扩展一些邮件操作啥的。

、调试
调试是软件开发中最重要的任务之一,并且是所有开发者在他们的开发过程中会遇到无数次的一项任务。在Visual Studio IDE中,开发者为调试.NET应用程序有几种可用的调试选择。
Visual Studio 2008
为使用VSTO 3.0Office解决方案开发提供了一组强大的创建和调试工具,与VSTO 2.0相比是一项大的改进。在创建配置时,开发者能够选择他们想创建的组件,排除他们当前想避免创建的组件。开发者可以像项目一样,灵活地为解决方案创建配置。

[小结]VSTO addin 安装部署

VSTO addin刚接触,对于此类部署没有做过,好在找到一篇很全面的文章。   http://www.cnblogs.com/brooks-dotnet/archive/2011/11/04/223...
  • xian_wwq
  • xian_wwq
  • 2013年11月26日 17:54
  • 7785

office vsto Add-In 插件 ClickOnce打包

**环境Virtual Studio 2013,Win7 打包工具:VS的ClickOnce 及 Inno5.5.9** 1.首先在ClickOnce设置打包配置 右键点击MyProject的属...
  • v_023
  • v_023
  • 2016年11月03日 09:02
  • 1173

Visual Studio 2008 RTM 已经对内发布

感谢adow的投递众多.NET开发人员所期待的Visual Studio 2008终于发布了,从昨天晚上开始微软全球的员工已经可以开始下载这个Internal Release版本。 虽然正式发布启动仪...
  • oyjd614
  • oyjd614
  • 2007年10月31日 20:12
  • 576

C# 服务自承载,在Winform或控制台中发布WebService

1、创建控制台项目 在
  • wangdaoyin2010
  • wangdaoyin2010
  • 2014年11月03日 15:28
  • 2745

VSTO简介

接触VSTO纯属偶然,前段时间因为忙于一个项目,在客户端Excel中制作一个插件,从远程服务器端(SharePoint Excel Services)上下载Excel到本地打开,用户编辑后再上传回服务...
  • samuel_chen
  • samuel_chen
  • 2015年05月29日 17:05
  • 743

VSTO Ribbons的完整介绍

Ribbons are the modern way to help users find, understand, and use commands efficiently and directly...
  • libingxin
  • libingxin
  • 2012年08月17日 19:12
  • 2908

iis本地发布网站

最近做了一个asp.net的新闻发布系统,然后我想发布到本地,然后请教了别人,然后就ok了,步骤分享下:   首先当然是安装iis,这个网上一搜一大把,都很详细,就不想说了。安装好iis后,就是正...
  • yan309271291
  • yan309271291
  • 2013年11月12日 19:57
  • 1135

2007 Microsoft Office system 不支持从预发布版的 2007...

我在安装 Microsoft Office 2007 前出了点小问题,可能你也会遇到了,如下:由于下列原因,安装程序无法继续:2007 Microsoft Office system 不支持从预发布版...
  • snlei
  • snlei
  • 2008年02月26日 15:45
  • 17574

VSTO Office二次开发键盘鼠标钩子使用整理

可能通过程序控制键盘的操作和控制鼠标的一些操作,网上提供比较多的也是比较好的就是通过钩子(Hook)的方式实现。 简单整理了一下,没有找到很好的程序示例,做了个简单的Hook测试。(对于Hook的原...
  • nodeman
  • nodeman
  • 2017年10月10日 11:10
  • 162

VSTO调试

Visual Studio Tools for Office Runtime 可将启动过程中发生的所有错误写入日志文件中,或者在消息框中显示每个错误。 默认情况下,这些选项是禁用的。 可以通过创建环境...
  • snlei
  • snlei
  • 2014年10月09日 11:11
  • 1297
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VSTO简介
举报原因:
原因补充:

(最多只允许输入30个字)