日期:2012-03-08  浏览次数:20432 次

使用 Microsoft Visual C# 进行 Microsoft Word 2002 和 Excel 2002 编程
Kerry Loynd 和 Siew-Moi Khor
Microsoft Corporation
2002年10月
适用于:
    Microsoft® Office XP
    Microsoft Visual C#™
摘要:了解 Microsoft C# 和大型复杂的 COM 服务器之间的 COM 互操作性。本文介绍了如何准备 Office XP COM 对象以及如何在 C# 程序中使用这些对象,同时还提供了一些提示,帮助您理解为何某些操作必须通过特定方法才能实现。
在 MSDN Downloads(英文)下载或浏览 odc_offcs.exe。

目录

  • 简介
  • 系统要求
  • .NET 的一些快速入门知识
  • 使用 Office XP 主互操作程序集
  • 代码演练
    • 示例 1:启动 Word Application 对象
    • 示例 2:创建新 Word 文档
    • 示例 3:打开现有的 Word 文档
    • 示例 4:使用 Word 公开的事件
    • 示例 5:动画显示 Office 助手
    • 示例 6:默认属性和索引属性
  • 小结

简介


Microsoft® Office XP 最强大的功能之一,就是其组件(例如 Microsoft Excel 2002 和 Microsoft Word 2002)以组件对象模型 (COM) 接口的形式公开其功能。通过 Microsoft Visual Basic® 6.0 访问这些 COM 接口要相对容易些,但要通过 C 或 C++ 来使用这些接口和公共类,则会比较困难。然而,拥有托管扩展的 Microsoft .NET 和 Microsoft C#™ 或 Microsoft Visual C++® 却能够象 Visual Basic 6.0 一样,轻松地使用 Office XP 公开的 COM 对象。
本文假定您要进行 Office XP 编程。尽管本文通篇提供了 MSDN® 文档的超链接,但要掌握本文介绍的内容,您应该已经熟悉或者能够访问 Office XP 编程文档。
该文档介绍了 Office XP 提供的接口和公共类及其使用方法。文档内容以 Visual Basic 编程语言形式表达,因此您需要在头脑中对其中的方法和事件签名进行转换。本文将介绍如何进行这种转换,如何准备 Office XP 的 COM 对象,以及如何在 C# 程序中使用这些 COM 对象。最后,本文还提供了一些提示,帮助您理解为何某些操作必须通过特定方法才能实现。通过此信息,您就应能够利用其他使用 C# 的 COM 服务器。

系统要求


要运行示例,计算机上需要安装以下软件:
  • Microsoft Windows® XP 或 Microsoft Windows 2000 及相关的 Service Pack (SP)
  • Microsoft Office XP 及相关的 SP
  • Microsoft .NET Framework(英文)及相关的 SP
  • Microsoft Office XP Primary Interop Assemblies (PIA)(英文)
  • Microsoft Visual Studio® .NET

.NET 的一些快速入门知识


.NET 技术引入了程序集的概念,并将其作为基本的可执行单元。程序集可以是可执行文件 (.exe) 或动态链接库 (.dll),并可以包含多个文件。程序集包含有关运行程序所需的代码、类型和资源的全部信息。
要使用 Office XP 公开的 COM 对象,需要使用主互操作程序集 (PIA),这样 C# 编译器就能够找到 Office XP 公开的接口和公共类。
有关互操作程序集或 PIA 方面的内容,本文将不做详细介绍。有关 PIA 的详细信息,请参阅 Primary Interop Assemblies (PIA)(英文)。本文的使用 Office XP 主互操作程序集一节提供了 Office XP PIA 的下载地址。
了解一下已公开的类型信息通常会给您一些启示。Microsoft Visual Studio® .NET 提供了一个称作 ILDASM 的工具,用于列出封装在程序集中的类型信息。图 1 是 ILDASM 显示 Word 2002 主互操作性程序集信息的部分屏幕快照。
注意:要打开 ILDASM 工具,请单击“开始”,指向“程序”,指向“Microsoft Visual Studio .NET”,然后指向 Visual Studio .NET Tools(Visual Studio .NET 工具)并单击 Visual Studio .NET Command Prompt(Visual Studio .NET 命令提示)。在 Visual Studio .NET Command Prompt(Visual Studio .NET 命令提示)窗口中,键入 ildasm。ILDASM 窗口随后打开。要查看某一特定互操作程序集或 PIA 的类型信息,在 File(文件)菜单中,单击 Open(打开)。浏览到互操作程序集或 PIA 的所在位置,选择要查看的互操作程序集或 PIA 并单击 Open(打开)。


图 1:使用 ILDASM 工具查看互操作程序集的类型信息
图 1 所示,程序集位于 Microsoft.Office.Interop.Word.dll 中,而接口和公共类则封装在 Microsoft.Office.Interop.Word 命名空间中。Application 公共类已经展开,这样就可以看到,它扩展(按照 C++ 和 C# 用语,为派生)了 Application,并且在 Word 中实现了 ApplicationEvents2_Event 接口。所有这些内容都将在本文后续部分进行详细讨论。

使用 Office XP 主互操作程序集


在运行本文包含的示例之前,应该在计算机上安装 Microsoft Office XP Primary Interop Assemblies (PIAs)(英文)。安装完 PIA 后必须将其置于编译器和已完成程序可以访问的位置。有关详细信息,请参阅 Office XP PIA 下载文档中包含的自述文件和“.NET Framework Developer's Guide”(要阅读它,请单击“开始”,指向“程序”,然后指向 Microsoft .NET Framework SDK 并单击 Documentation [文档])中的“Assembly Location”一文。
本文出于演示目的,将 Office XP PIA 解压缩到以下文件夹:C:\Office XP PIAs\。然后将其安装到全局程序集缓存 (GAC) 并进行注册(有关该操作的详细信息,请参阅 Microsoft Office XP Primary Interop Assemblies (PIA) [英文] 的自述文件)。
可通过在命令行键入 C# 编译器的可执行文件名称 (csc.exe) 来调用此编译器。安装并注册 PIA 后,便可使用 /r 选项,象引用其他任何程序集一样在 csc 命令行上对其进行引用。如果 PIA 的位置无法访问,程序将在运行时失败,并生成一个 System.IO.FileNotFoundExceptionSystem.TypeInitializationException 类型的异常,告知哪个程序集无法加载。
接下来在“如何编译和运行 example1.cs”一节中,将会介绍如何使用命令行生成 C# 程序和引用 PIA。
本文包含的示例使用三个 Office XP PIA:
  • Microsoft.Office.Interop.Word.dll
  • Office.dll
  • Microsoft.Office.Interop.Excel.dll

代码演练


演示代码示例之前,首