Visual Studio 2010特性支持Office

  一位漂亮的OL把Word当做文字处理软件来使用,这无可厚非;但是如果一位帅气的Developer也仅仅把Word当做文字处理软件来使用,恐怕会被同行耻笑。在程序员的眼中,Office不仅仅是一套非常流行的办公软件,更是一个成熟的开发平台。Office的应用是如此广泛,几乎深入到企业信息化和个人文档处理的每个角落。通过Office开发,可以帮助企业或者个人完成很多重复性的工作,规律性的工作甚至创造性的工作,正是因为如此,Office开发在软件开发中显得越来越重要,已经成为商业软件开发的一个重要领域。

  为了支持Office开发,无论是从上层的二次开发语言VBA,还是底层的Office开发工具VSTO(Visual Studio Tools for Office),微软都给予了大力的支持。我们这里按下VBA不表,单说这Visual Studio 2010 CTP中新特性对Office开发的支持。

  有道是“樱桃好吃树难栽,Office好用开发难”。做过Office开发的程序员常常会有这样的抱怨:“这个垃圾C#,连个可选参数都不支持!”
  “COM接口太复杂繁琐啦,我都快被折磨死了!”“告诉客户,他的机器上必须也安装Office 2003!Office 2007不支持!!!!!”

  这是因为Office整个系统本身非常庞杂,Office对象模型难于全部掌握,开发语言对Office开发支持不够等等,这些都使得Office开发就像一头笨重的大象,虽然稳定,但是行动却有些迟缓,开发效率不高。

  不过这些抱怨很快就会成为历史了。在Visual Studio 2010 CTP中,它提供了很多新的特性,来解决上述的这些Office开发中的主要问题,以更好地支持Office开发。当然,这些特性也可以应用在其他场合。这些新的特性包括:

  1. 动态编程
    在前面的文章中我们曾经介绍过,C# 4.0中引入了一种新的静态类型dynamic,这使得我们在使用COM进行Office开发的时候,无需再进行复杂而繁琐的对象类型转换。
  2. 可选参数
    Office提供的函数往往有很多参数,在大多数情况下,很多参数使用默认值就可以了,无需全部指定。但是在C# 3.0中,因为它不支持可选参数,导致每次调用函数都必须给定全部参数,代码繁琐而臃肿。C# 4.0通过对可选参数的支持,很好地解决了这一问题。
  3. No-PIA部署
      以前的Office开发,都要求目标机器(用户机器)上同样安装了Office,有时甚至对Office的版本还有特殊的要求。这给Office程序的部署带来了极大的困难:目标机器千差万别,有的安装了Office,有的没有安装,安装了Office的机器,Office版本又各不相同。在Visual Studio 2010中,因为有了No-PIA部署的支持,这些问题都得到了很好的解决。

  有了上述特性的支持,Visual Studio 2010中Office开发开始变得简洁而自然。为了让大家有更加深刻的体会,下面我们以一个实际的例子,来看看这些新特性是如何更好地支持Office开发的。在这个例子中,我们将创建一个表示银行账号的类,然后用这个类的数据填充一个Excel表格,最后将这个表格嵌入到一个Word文档中。(这里需要说明的是,虽然有了No-PIA部署的支持,目标机器上无需安装Office,但是开发机器上还是需要安装Office的。)

  1. 创建Office开发项目OfficeDev

  启动Visual Studio 2010 CTP,我们创建一个基于Visual C#的控制台应用程序(Console Application),同时确保目标平台是“.NET Framework 4.0”:

图1 创建Office开发项目

 

  要使用托管代码调用 Office 应用程序功能,必须使用互操作程序集。互操作程序集使托管代码可以与 Office 应用程序的基于 COM 的对象模型进行交互。所以在项目创建完成后,为了进行Office开发,我们需要在项目中添加Office互操作程序集的引用。在解决方案浏览器(Solution Explorer)中的项目节点上,我们单击右键,在弹出的上下文菜单中我们选择“添加引用(Add Reference)”。在弹出的对话框中,我们选中.NET标签页中的Microsoft.Office.Interop.Excel, version 12.0和Microsoft.Office.Interop.Word, version 12.0,单击“OK”将它们添加到刚刚创建的项目OfficeDev中。

图2 添加互操作程序集

  2. 创建和准备银行账号类Account

  在OfficeDev项目中,我们新建一个类Account,用来表示银行账号。我们将这个类实现如下:

public class Account {
public string Name { get; set; }
public double Balance { get; set; }
}

  4. 将Excel表格嵌入Word文档

  Excel表格填充完成后,我们将这个表格嵌入到Word文档中。在主函数Main()的末尾添加如下代码,它将创建一个空的Word文档,然后通过调用函数PasteSpecial(),将Excel表格以链接的形式粘贴到Woed文档中:

var word = new Word.Application();
word.Visible
= true;
word.Documents.Add();
word.Selection.PasteSpecial(Link:
true, DisplayAsIcon: true);

NET技术Visual Studio 2010特性支持Office,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。