使用 Open XML SDK 2.0 从 Word 2010 文档中提取样式

前端之家收集整理的这篇文章主要介绍了使用 Open XML SDK 2.0 从 Word 2010 文档中提取样式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

http://msdn.microsoft.com/zh-cn/library/gg615380(v=office.14).aspx

虽然可利用 Open XML 文件格式检索 Microsoft Word 文档中的内容快,但执行此操作需要做一些工作。Open XML SDK 2.0 添加了将简化对 Open XML 文件格式的访问的强类型类:SDK 将简化检索任务,例如,检索包含文档样式或 stylesWithEffects 部分的XDocument实例。在给定 XML 内容的情况下,您可以对信息进行存档、修改并重新应用信息或将信息应用于新文档。此直观操作方法附带的代码示例将介绍如何使用 SDK 检索样式或 stylesWithEffects 部分 - 该代码示例中并未介绍如何将样式应用于新文档。

此直观操作方法附带的示例将包含检索 Word 2007 或 Word 2010 文档的样式或 stylesWithEffects 部分的XDocument实例所需的代码。以下各节详细介绍了该代码。请注意,在 Word 2007 中创建的文档只有一个 styles 部分;Word 2010 添加了第二个 stylesWithEffects 部分。为了使文档能够在 Word 2010 和 Word 2007 之间来回转换,Word 2010 保留了原始 styles 部分和新 styles 部分。Open XML 规范需要 Microsoft Word 忽略它无法识别的部分;Word 2007 无法识别由 Word 2010 添加到文档的 stylesWithEffects 部分。应用程序必须对检索样式或 stylesWithEffects 部分所获得的结果进行解释。

设置引用

若要使用 Open XML SDK 2.0 中的代码,您必须向您的项目添加几个引用。虽然示例项目已包含这些引用,但您需要在您的代码中显式引用以下程序集:

  • WindowsBase- 可以根据您创建的项目的类型为您设置此引用。

  • DocumentFormat.OpenXml- 由 Open XML SDK 2.0 安装。

您还应将下面的 using/Imports 语句添加代码文件的顶部。

C#
VB
using System;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using DocumentFormat.OpenXml.Packaging;

检查过程

WDExtractStyles过程接受两个参数:第一个参数包含一个指示要修改文件路径的字符串,第二个参数指示是要检索 styles 部分还是更新的 stylesWithEffects 部分(实际上,您需要对 Word 2010 文档调用此过程两次,以便检索这两个部分)。此过程将返回一个XDocument实例,该实例包含您请求的完整 styles 或 stylesWithEffects 部分以及文档的所有样式信息(或一个空引用,如果您情况的部分不存在)。

此过程将检查您指定的文档,并查找指定的 styles 或 stylesWithEffects 部分。如果该部分存在,则此过程会将其作为XDocument实例返回。若要调用此过程,请传递参数值,如示例代码中所示。在您运行示例代码之前,请务必提供一个名为 C:\temp\StylesFrom.docx 的文档,该文档(用于演示)包含一些示例已修改的样式。

访问文档

代码首先会创建一个名为styles的变量,此过程在退出之前将返回该变量。

接下来,该代码将使用WordprocessingDocument.Open方法打开文档,并指示应打开此文档以供只读访问(最后的false参数)。在打开文档的情况下,该代码将使用MainDocumentPart属性导航到主文档,然后准备一个名为stylesPart的变量来保存对 styles 部分的引用。

查找正确的 Styles 部分

接下来,该代码将使用setStylesWithEffectsPart布尔参数来检索对请求的 styles 部分的引用。然后,该代码将基于此值检索docPart变量的特定属性,并将其存储在stylesPart变量中。

检索部分内容

如果请求的 styles 部分存在,则该代码必须该部分在XDocument实例中的完整内容。每个部分均提供一个用于返回StreamGetStream方法。该代码会将Stream实例传递给XmlNodeReader.Create方法,然后调用XDocument.Load方法,并将XmlNodeReader作为参数传递。在使用 XDocuments 和 Open XML 部分时,此系列步骤很常见。您会发现它们很常用。

示例过程

下面的代码示例包含完整的示例过程。

此直观操作方法附带的示例演示了将检索 Word 文档中的 styles 或 stylesWithEffects 部分的代码。若要使用该示例,请安装 Open XML SDK 2.0(可通过“浏览”一节中列出的链接获得)。该示例还将使用作为 Open XML SDK 2.0 代码段集的一部分包含的修改后的代码。“浏览”一节还包括指向完整代码段集的链接,但您无需下载并安装代码段即可使用该示例。

示例应用程序仅演示了在修改文档结构时可与之交互的由 Open XML SDK 2.0 提供的几个可用属性方法。有关详细信息,请查看 Open XML SDK 2.0 Productivity Tool 附带的文档:单击应用程序窗口左下角的“Open XML SDK 文档”选项卡,搜索要研究的类。尽管文档并不总是包含代码示例,但借助此处所示的示例和文档,您应能够成功修改示例应用程序。

猜你在找的XML相关文章