技术开发 频道

详解VSTS与OFFICE的协同开发:Excel篇

  Excel对象模型概述

  由于 Excel 文档中的数据是高度结构化的,因此Excel对象模型也具有层次结构简单明了的特点。我们都知道,Excel可以说是Office套件中最复杂程序了。为了操作Excel,它提供了数百个我们可能需要与之交互的对象,不过我们可以从这些对象中的少数几个开始来掌握Excel对象模型。其中我们最常用的几个类是:

  •Application类
  Application类的对象表示 Excel 应用程序本身。Application 对象公开了大量有关正在运行的应用程序、应用于该实例的选项以及在该实例中打开的当前用户的对象的信息等。

  •Workbook类
  Workbook类表示 Excel 应用程序内的单个工作簿。

  •Worksheet类
  Worksheet 对象是 Worksheets 集合的成员。Worksheet类的许多属性、方法和事件与 Application 或 Workbook 类提供的成员完全相同或相似。

  •Range类
  Range 对象是 Excel 应用程序中最常用的对象。在对 Excel 内的任何范围进行处理之前,我们必须将它表示为 Range 对象,并使用该对象的方法和属性对其进行处理或者获得它的值。Range 对象可以表示一个单元格、一行、一列、包含一个或多个单元格块(可以连续,也可以不连续)的单元格选定范围,甚至多个工作表中的一组单元格。

  在Visual Studio中,VSTO将这些本机对象中的很多对象扩展为可在文档级自定义项中使用的宿主项和宿主控件。这些控件具有额外的功能,包括数据绑定功能和事件等。例如,本机 的Range 对象被扩展为 NamedRange 控件,该控件可与数据绑定并公开事件。

  使用 Excel 完成的很多工作都是围绕着这四个类和它们的成员进行的。Excel对象模型严格遵循着这样的结构层次:Application 对象表示整个应用程序,每个 Workbook 对象都包含 Worksheet 对象的一个集合。而在每个Worksheet中,我们使用Range对象来表示单元格抽象。使用Range对象可以处理单个单元格或者成组的单元格。  

  在使用 Visual Studio 2010 创建新的 Excel 文档级自定义项项目时, Visual Studio会为我们创建ThisWorkbook,Sheet1,Shee2和Sheet3着四个类,分别表示整个工作簿和其中的三个工作表。


图2 Visual Studio创建的类

  我们可以使用全局类 Globals 从 ThisWorkbook、Sheet1、Sheet2 或 Sheet3 类的外部分别访问各个类。例如,我们可以在Ribbon界面类中对Excel表格进行赋值:

private void button1_Click(object sender, EventArgs e)
{
    
if (Globals.Sheet1 != null)
    {
        Globals.Sheet1.namedRange1.Value2
= this.textBox1.Text;
    }
}

  这样,通过全局类Globals,我们可以在任意位置访问到我们需要的工作簿等Excel文的的内容。

0
相关文章