没有合适的资源?快使用搜索试试~ 我知道了~
首页EXCEL 对象操作实例 C# VB
资源详情
资源评论
资源推荐

从 .NET 开发人员的角度理解 Excel 对象模型
适用于:
用于 Microsoft Office 系统的 Microsoft Visual Studio 工具
Microsoft Office Excel 2003
Microsoft Visual Studio .NET 2003
摘要:讨论了 Microsoft Office Excel 2003 提供的一些对象,并且说明了如何使用它们通
过用于 Microsoft Office 系统的 Microsoft Visual Studio 工具来创建托管代码解决方
案。重点主要是 Application、Workbook、Worksheet 和 Range 对象。Visual
Basic .NET 和 Visual C# 代码示例演示了每个对象一些属性、方法和事件。
从 Microsoft 下载中心下载 ExcelObj.exe。
本页内容
简介
Application 对象
Workbook 类
Worksheet 类
Range 对象
下期内容
简介
对于打算利用用于 Microsoft Office 系统的 Microsoft Visual Studio 工具的开发人员
和想要仅仅使用 COM 自动化来控制 Microsoft Office Excel 2003 应用程序的人来说,他
们需要能够与 Excel 对象模型提供的对象进行交互。Excel 提供了数百个您可能想要与之交互的
对象,但是您可以通过集中于这些可用的对象的一个非常小的子集来获得对象模型方面的一个良好
的开端。这些对象包括:
Application
Workbook
Worksheet
Range
尽管不可能具体地量化,但是当您使用 Excel 时,大部分的工作将以这四个类以及它们的成员为
核心。在本文档中,您将学会如何利用这些类中的每一个,另外,我们还会向您介绍每个类的一些
属性、方法和事件。您也将会看到一些可以尝试的示例,这些示例演示了每个对象的一些功能。

提示总的说来,使用 Microsoft Visual Basic .NET 的开发人员在使用 Microsoft
Office 对象时,相比于使用 Microsoft Visual C# 的开发人员来说要轻松得多,一个重要的
原因在于:Visual Basic for Applications (VBA) 方法常包含可选参数,而 Visual
Basic .NET 支持可选参数。C# 开发人员将发现他们必须为每个可选方法参数提供一个值,而
Visual Basic .NET 开发人员可以简单地使用命名的参数只提供他们需要的值。另外,C# 不支
持带有参数的属性(除了索引器以外),然而,许多 Excel 属性可以接受参数。您将会发现,对
于 C# 开发人员来说,一些属性(例如可用于 VBA 和 Visual Basic .NET 的
Application.Range 属性)需要单独的访问器方法(get_Range 方法替换了 Range 属性)。
在本文中,请注意这样的语言之间存在的差异。
在大多数情况下,您将会发现 Excel 对象模型直接模拟其用户界面。不难猜想,Application
对象提供了封装整个应用程序的包装,并且每个 Workbook 对象都包含 Worksheet 对象的一个
集合。其中,表示单元格的主要的抽象是 Range 对象,这使得您能够使用单个单元格或者单元格
组。
下面的每个部分都将描述一个主要的 Excel 对象,挑选对象的特定成员来进行演示。由于可供研
究的对象有数百个,所以不可能在这里对所有的对象进行深入的探讨:您将会得到足够的对象模型
方面的知识来开始您的工作,并且可以使用 Excel 联机帮助来获得更详细的信息。
提示 在本文中,您将看到 DirectCast 和 CType 方法的许多用途。其原因在于示例项目有自己
的 OptionStrict 设置 — 这意味着 Visual Basic .NET 需要严格的类型转换。许多 Excel
方法和属性返回 Object 类型或者依赖于晚期绑定:例如,Application.ActiveSheet 属性
返回 Object,而不是您猜想的 Worksheet。因此,为了尽可能地进行严格的类型转换,示例启用
了 Option Strict,并且显式地处理每种类型转换。(如果不在 Visual Basic .NET 中使用
Option Strict,您编写的代码可能编译良好,但是会在运行时失败。这就是 Option Strict
意义所在 — 它大大减少了非法转换在运行时产生异常的可能性)。如果您是一名正在阅读本文档的
C# 开发人员,您可能会赞赏这种决定。
这本白皮书引用了示例项目 ExcelObjectModel.sln。这个项目包含一个 Excel 工作簿以及相
关的 Visual Basic .NET 代码。并不是本文中展示的每个示例都出现在这个示例项目中,但是
需要多于一行或两行代码的任何示例都放到了工作簿中,并且在项目内设置了调用代码的超级链接。
提示 在这篇篇幅有限的文章中,不可能对每个对象或成员进行注解。甚至不可能提及这些类中的一
小部分。研究任何大型对象模型最好的工具是 Object Browser 窗口,其中,您可以找到每个类
的列表、以及该类的成员。您将会发现,在本文档中讨论的许多类成员适用于许多其他不同的类:
例如,在 Sheets 集合的上下文中讨论的 PrintOut 方法同样适用于
Chart、Worksheet、Range 和其他的对象。本文档旨在让您知道什么是可用的,而剩下的东西
要靠您好奇的本性来挖掘了。
返回页首
Application 对象

Excel Application 对象代表 Excel 应用程序本身。这可能听起来是显而易见的,但是
Application 对象公开了大量关于运行时应用程序、应用到该实例的一些选项、以及在该实例内
打开的当前用户对象的信息。Application 对象提供了许多成员,其中的许多成员您从来都不需
要研究,但是其他的一些成员对于您的应用程序的行为是否正确至关紧要。您可以将这些成员分为
以下种类:
在 Excel 中控制状态和显示的成员
返回对象的成员
执行操作的成员
处理文件操作的成员
其他成员
下面几部分介绍了这些组中的每一个、以及演示一些成员的代码示例。
在 Excel 中控制状态和显示的成员
Application 对象提供了一个大的属性集来控制 Excel 的一般状态。表 1 列出了与状态有关的
Application 对象属性的一个子集。
表 1. 一些控制 Excel 的状态
的 Application 属性 属性
类型 说明
Cursor XlMousePointer
(xlDefault,
xlIBeam,
xlNorthwestArrow,
xlWait)
获取或设置鼠标指针的外观。
EditDirectlyInCell
布尔值 直接就地获取或设置编辑单元格的
能力。如果为 False,则您只能
在公式栏中编辑单元格。
FixedDecimal
布尔值
如果为 True,则所有的数字值都
使用 FixedDecimalPlaces 属
性来确定小数位数;否则将忽略
FixedDecimalPlaces 属性
(默认值为 False)。
FixedDecimalPlaces Long
确定用于数值数据的小数位数(如
果 FixedDecimal 属性为

True)。
Interactive
布���值 获取或设置用户通过键盘和鼠标与
Excel 交互的能力;如果将此属
性设置成 False,则一定要确保
在异常处理程序中将其重新设置成
True。Excel 不会自动为您重新
设置它。
MoveAfterReturn
布尔值 如果为 True,则当您按下 Enter
键时,选择会移到下一个单元格;
默认值为 True。
MoveAfterReturnDirection xlDirection
(xlDown, xlToLeft,
xlToRight, xlUp)
指示在按下 Enter 键之后移动的
方向(如果 MoveAfterReturn
属性为 True)。默认值为
xlDown。
ScreenUpdating
布尔值 如果为 True,Excel 就会在每
个方法调用之后更新其屏幕。为了
节省时间并且使您的应用程序看起
来更加专业,您可以在代码运行时
关掉显示。一旦完成,就一定要再
次将此属性值重新设置为
True。Excel 不会自动为您重新
设置它。
SheetsInNewWorkbook Long
获取或设置 Excel 自动放置在新
的工作簿中的工作表的数目。
StandardFont
字符串 获取或设置 Excel 中默认字体的
名称;只有在重新启动 Excel 之
后才会生效。
StandardFontSize Long
获取或设置 Excel 中默认字体的
大小;只有在重新启动 Excel 之

后才会生效。
StartupPath(只读) 字符串 返回包含 Excel 启动加载项的文
件夹的完整路径。
TemplatesPath(只读) 字符串 返回包含模板的文件夹的完整路
径;此值代表着一个 Windows 特
殊文件夹。
在表 1 所列出的所有属性中,您最可能使用的一个属性是 ScreenUpdating 属性。通过利用这
个属性,您不但可以使您的 Excel 应用程序看起来更加专业,还可以使它们运行得更快 — 在每次
修改后更新显示会严重影响代码的运行效率,特别是在大范围中通过编程方式填写时。然而,重要
的是,当您完成您的工作时始终要设置这个属性,因为 Excel 不会为您重新设置它。因此,当使
用 ScreenUpdating 属性时,您将需要始终使用如下代码片段,并且利用 .NET 异常处理来确保
屏幕更新恢复:
' Visual Basic
Try
ThisApplication.ScreenUpdating = False
' Do your work that updates the screen.
Finally
ThisApplication.ScreenUpdating = True
End Try
// C#
try
{
ThisApplication.ScreenUpdating = false;
// Do your work that updates the screen.
}
finally
{
ThisApplication.ScreenUpdating = true;
}
Application 对象还提供了一组控制 Excel 中的显示的属性。您可以修改这些属性中的任何一
个来改变用户在屏幕上所看到的内容。表 2 列出了可用的显示选项的一个子集。
表 2 一些控制 Excel 的外观的
Application 属性 属性
类
型
说明
剩余63页未读,继续阅读













安全验证
文档复制为VIP权益,开通VIP直接复制

评论1