Excel 对象模型概述
更新:2007 年 11 月
适用于 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
若要开发使用 Microsoft Office Excel 的解决方案,可以与 Excel 对象模型提供的对象进行交互。本主题介绍最重要的类:
对象模型严格遵循用户界面。Application 对象表示整个应用程序,每个 Workbook 对象都包含 Worksheet 对象的一个集合。因此,表示单元格的主要抽象是 Range 对象,使用该对象可以处理单个单元格或成组的单元格。
Visual Studio Tools for Office 将其中的很多本机对象扩展为可在文档级自定义项中使用的宿主项和宿主控件。这些控件具有额外的功能,包括数据绑定功能和事件。例如,本机 Excel Microsoft.Office.Interop.Excel.Range 对象扩展为 Microsoft.Office.Tools.Excel.NamedRange 控件,该控件可与数据绑定并公开事件。有关宿主项和宿主控件的更多信息,请参见文档级项目中的扩展对象。
本主题简要概述 Excel 对象模型。有关可供了解整个 Excel 对象模型更多相关信息的资源,请参见使用 Excel 对象模型文档。
访问 Excel 项目中的对象
在使用 Visual Studio Tools for Office 创建新的 Excel 应用程序级项目时,Visual Studio 将自动创建一个 ThisAddIn.vb 或 ThisAddIn.cs 代码文件。可以使用 Me.Application 或 this.Application 访问 Application 对象。
在使用 Visual Studio Tools for Office 创建新的 Excel 文档级项目时,可以选择创建新的 Excel 工作簿项目还是 Excel 模板项目。对于工作簿项目和模板项目,Visual Studio Tools for Office 都会在新的 Excel 项目中自动创建以下代码文件。
Visual Basic |
C# |
---|---|
ThisWorkbook.vb |
ThisWorkbook.cs |
Sheet1.vb |
Sheet1.cs |
Sheet2.vb |
Sheet2.cs |
Sheet3.vb |
Sheet3.cs |
您可以使用全局类 Globals 从 ThisWorkbook、Sheet1、Sheet2 或 Sheet3 类的外部分别访问各个类。有关更多信息,请参见 对 Visual Studio Tools for Office 项目中的对象的全局访问。下面的示例调用 Sheet1 的 PrintPreview 方法,无论代码是放在 Sheet 类中还是放在 Workbook 类中。
Globals.Sheet1.PrintPreview()
Globals.Sheet1.PrintPreview(missing);
由于 Excel 文档中的数据是高度结构化的,因此该对象模型也具有层次结构并且简单明了。Excel 提供了数百个您可能需要与之交互的对象,不过您可以从这些对象中的少数几个开始来掌握对象模型。这些对象包括以下四种:
Application
Workbook
Worksheet
Range
使用 Excel 完成的很多工作都是围绕这四个类和它们的成员进行的。
Application 对象
Excel Application 对象表示 Excel 应用程序本身。Application 对象公开了大量有关正在运行的应用程序、应用于该实例的选项以及在该实例中打开的当前用户的对象的信息。
说明: |
---|
不应将 Excel 中 Application 对象的 EnableEvents 属性设置为 false。将此属性设置为 false 将阻止 Excel 引发任何事件,包括宿主控件的事件。 |
Workbook 对象
Microsoft.Office.Interop.Excel.Workbook 类表示 Excel 应用程序内的单个工作簿。
通过提供 Microsoft.Office.Tools.Excel.Workbook 类(使用该类可以访问 Workbooks 集合的所有成员)以及数据绑定功能和附加事件,Visual Studio Tools for Office 扩展了 Microsoft.Office.Interop.Excel.Workbook 类。
Worksheet 对象
Microsoft.Office.Interop.Excel.Worksheet 对象是 Worksheets 集合的成员。Microsoft.Office.Interop.Excel.Worksheet 的许多属性、方法和事件与 Application 或 Microsoft.Office.Interop.Excel.Workbook 类提供的成员完全相同或相似。
Excel 提供 Sheets 集合作为 Microsoft.Office.Interop.Excel.Workbook 对象的属性,但是 Excel 中没有 Sheet 类。相反,Sheets 集合中的每个成员都是 Microsoft.Office.Interop.Excel.Worksheet 或 Microsoft.Office.Interop.Excel.Chart 对象。
对于文档级自定义项,Visual Studio Tools for Office 会在新的项目中提供一个 Microsoft.Office.Tools.Excel.Worksheet 宿主项,并创建三个实例:Sheet1、Sheet2 和 Sheet3。对其中任何工作表的访问都可以通过 Globals 引用进行。Visual Studio Tools for Office 通过提供 Microsoft.Office.Tools.Excel.Worksheet 宿主项来扩展 Microsoft.Office.Interop.Excel.Worksheet 对象。
Range 对象
Microsoft.Office.Interop.Excel.Range 对象是 Excel 应用程序中最常用的对象。在能够处理 Excel 内的任何范围之前,必须将它表示为 Range 对象,并处理该对象的方法和属性。Range 对象表示一个单元格、一行、一列、包含一个或多个单元格块(可以连续,也可以不连续)的单元格选定范围,甚至多个工作表中的一组单元格。
对于文档级自定义项,Visual Studio Tools for Office 引入了两个范围宿主控件:Microsoft.Office.Tools.Excel.NamedRange 控件和 Microsoft.Office.Tools.Excel.XmlMappedRange 控件。有关宿主控件的更多信息,请参见 宿主项和宿主控件概述。
文档级项目中的扩展对象
了解 Excel 对象模型提供的本机对象和 Visual Studio Tools for Office 提供的扩展对象(宿主项和宿主控件)之间的区别非常重要。这两种类型的对象都可用于文档级项目。
区别体现在以下四个方面:
设计时。当您在设计时添加任何扩展的 Excel 对象时,它们将自动创建为宿主项和宿主控件。例如,如果在设计器中向工作表添加一个列表,则会自动生成代码来将该列表扩展为一个 Microsoft.Office.Tools.Excel.ListObject 控件。
运行时。不会在运行时自动创建宿主项。如果在运行时添加工作簿、工作表或图表工作表,它们将是本机 Excel 对象,不具备宿主项所提供的附加功能。您能够以编程方式添加许多宿主控件。有关更多信息,请参见宿主项和宿主控件概述。
数据绑定和事件。宿主项和宿主控件具有数据绑定功能和事件,这两点是本机对象所不具备的。
类型。本机 Excel 对象使用 Microsoft.Office.Interop.Excel 命名空间中定义的类型,而宿主项和宿主控件使用 Microsoft.Office.Tools.Excel 命名空间中定义的聚合类型。
使用 Excel 对象模型文档
有关可在 Excel 对象模型中使用的类的信息,请参见以下文档集:
第一个链接提供有关 Excel 主互操作程序集中的类和接口的信息。其他链接提供有关向 Visual Basic for Applications (VBA) 代码公开 Excel 对象模型时该模型的信息。对于使用 Visual Studio Tools for Office 的开发人员而言,每组文档都有优缺点。
主互操作程序集参考
此文档描述 Excel 主互操作程序集中的、可在 Visual Studio Tools for Office 项目内使用的所有类型。但是,此文档也存在一些不足:
它只描述了 Excel 2003 主互操作程序集中的类型。要了解 Excel 2007 主互操作程序集中的新类型和成员的说明,您必须参考 Excel 2007 的 VBA 参考。
该文档目前未提供任何代码示例。
VBA 参考
VBA 参考中的所有对象和成员都对应于您在 Visual Studio Tools for Office 项目中使用的主互操作程序集中的类和成员。例如,Excel VBA 文档中的 Worksheet 对象对应于主互操作程序集中的 Microsoft.Office.Interop.Excel.Worksheet 类。
VBA 参考具有下列优点:
它同时描述了 Excel 2007 和 Excel 2003 的对象模型。
它为大多数成员提供了代码示例。
VBA 参考存在下列不足之处:
- 它只提供了适用于 VBA 的语法和代码示例。若要在 Visual Studio Tools for Office 项目中使用这些代码示例,您必须将 VBA 代码转换为 Visual Basic 或 Visual C#。
主互操作程序集中的附加类型
主互操作程序集包含许多不可用于 VBA 的类型。这些附加类型可帮助将 Excel 基于 COM 的对象模型中的对象转换为托管代码,并且不应在代码中直接使用。
有关更多信息,请参见 Overview of Classes and Interfaces in the Office Primary Interop Assemblies。