VSTO学习笔记(一)VSTO概述一、什么是VSTO?VSTO = Visual Studo Tools for Office,是.net平台下的Office开发技术相对于传统的VBA(Visual Basic Application)开发,VSTO为中高级开发人员提供了更加强大的开发平台和语言,并部分解决了传统Office开发中的诸多问题(难于更新、可扩展性差、难以维护、安全性低等),开发人员可以使用熟悉的技术来构建更加灵活的、强大的、跨平台的企业级解决方案二、为什么要进行Office开发? Office拥有强大的数据分析、显示和计算能力,尤其在桌面领域,已经成为了办公自动化的行业标准虽然Office功能强大,但是也不可能满足各行各业的特定需求,如果能够借助于Office构建企业的个性需求,那将十分具有吸引力这样,在不需要其他专业软件的情况下,就可能完成既定的目标三、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程序集里,这允许开发者保留非托管代码而无须完全重写带有链接或引用托管代码程序集的文档或工作簿被作为托管代码扩展通过使用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环境中可使用WPFVSTO的可视设计器支持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应用程序用户界面中显示或隐藏任务窗格l· 窗体区域:窗体区域是自定义标准的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将它们整合到企业解决方案中,例如客户关系管理、供应链管理以及其他类似的应用程序。
l· 使用ClickOnce部署:ClickOcne部署技术允许基于Windows应用程序使用最小程度的用户交互来部署和运行安全区将限制使用ClickOnce技术部署的应用程序的许可和操作 · Word内容控件:内容控件是容器,其中能放置特定类型的内容,例如日期、列表、图片或文本l· 富用户界面控件:能够创建带有丰富且容易访问的用户界面的Office解决方案例如,可以创建带有Windows控件的任务窗格,和其它数据源交互数据 · 支持其他的Office应用程序VSTO架构VSTO应用程序由Office应用程序和.NET程序集组成l· Office应用程序:VSTO公布了对象,使之更容易编写Office应用程序包括扩充应用程序和处理应用程序使用的数据的对象要理解的重点之一是Word和Excel编辑器提供了Word或Excel文档视图使用这些编辑器,可以编辑和格式文档,就像直接在Office应用程序中操作一样l· .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应用程序开发应用程序级和文档级的解决方案是。