摘自 Mr.Brooks 接触VSTO纯属偶然,前段时间因为忙于一个项目,在客户端Excel中制作一个插件,从远程服务器端(SharePoint Excel Services)上下载Excel到本地打开,用户编辑后再上传回服务器端。当时工期紧迫,临时查了些资料,用VSTO + Excel COM API完成。正因为这个项目,我发现了VSTO的强大功能与潜力,决定抽出一些时间来好好研究下。 示例代码下载 本系列所有示例代码均在 Visual Studio 2010 Beta 2 + Office 2010 Beta 下测试通过
一、什么是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推出,提供了大量新特性: - 提供了新的文档模板
- 对Word、Excel的可视化支持
- 可以使用托管的Windows Forms控件或组件
- 宿主控件(不知道翻译的怎样:))
- 支持在文档中添加智能标签
- 动作面板支持
- 数据绑定、数据源、数据模型支持
- 数据缓存
- 服务器端编程
- 配置文件
- 新的部署方式
- InfoPath开始支持托管代码
- 与众不同的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环境中可使用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控件的任务窗格,和其它数据源交互数据。
|