在 C# 中从 MS Word 文档提取文本

Microsoft Word 文档广泛用于创建和分享文本内容。如果您在 C# 应用程序中处理 Word 文档,您可能需要使用 C# 从 Word 文档中提取文本保留格式提取文本。例如,您可能想分析文本、提取文档的特定部分,或将它们合并为一个文档。在本博文中,我们将探讨如何使用 最佳 C# Word 文档文本提取库 从 Word 文档中提取文本。

从 Word 文档中提取文本的 C# 库

Aspose.Words for .NET 是一个功能丰富且易于使用的库,用于处理 Word 文档。它提供了广泛的能力,包括 .NET Word 文档文本提取、文档创建、操作和转换。使用 Aspose.Words for .NET,您可以处理 Word 文档的各个方面,使其成为开发者寻找 高效 C# Word 文本提取 的有价值工具。

您可以 下载 DLL,或通过包管理控制台直接从 NuGet 安装库。

PM> Install-Package Aspose.Words

从 Word 文档中提取文本

MS Word 文档由各种元素组成,包括段落、表格、图像等。因此,文本提取的需求可能因场景而异。例如,您可能需要 从扫描的 Word 文档提取文本 C#从 Word 文件提取文本 C# .NET。Word 文档中的每种元素都表示为一个节点。因此,要处理文档,您需要与节点进行交互。让我们开始并查看如何在不同场景下从 Word 文档中提取文本,同时确保 在提取文本时有效处理 Word 格式 C#

从 Word DOC 中提取文本

在本节中,我们将实现一个用于 Word 文档的 C# 文本提取器,文本提取的工作流程如下:

  • 首先,我们将定义需要包含在文本提取过程中的节点。
  • 然后,我们将提取指定节点之间的内容(包括或排除起始和结束节点)。
  • 最后,我们将使用提取节点的克隆,例如,创建一个由提取内容组成的新 Word 文档。

现在让我们编写一个名为 ExtractContent 的方法,将节点和一些其他参数传递给它以执行文本提取。此方法将解析文档并克隆节点。以下是我们将传递给此方法的参数:

  1. StartNodeEndNode 分别作为提取内容的起始和结束点。这些可以是块级节点(如 ParagraphTable),也可以是行内级节点(例如 RunFieldStartBookmarkStart 等)。
    1. 要传递字段,您应传递相应的 FieldStart 对象。
    2. 要传递书签,应传递 BookmarkStartBookmarkEnd 节点。
    3. 对于注释,应使用 CommentRangeStartCommentRangeEnd 节点。
  2. IsInclusive 定义标记是否包含在提取中。如果此选项设置为 false,并且传递相同节点或连续节点,则将返回一个空列表。

以下是完整的 ExtractContent 方法实现,该方法准确地从传递的节点之间提取内容,从受保护的 Word 文档提取文本 C#

ExtractContent 方法还需要一些辅助方法来完成文本提取操作,如下所示。

现在我们已经准备好利用这些方法,并 使用 C# 从 Word 文档中提取文本

提取 Word 文档段落之间的文本

让我们看看如何在 Word DOCX 文档中提取两段之间的内容。以下步骤在 C# 中执行此操作。

  • 首先,使用 Document 类加载 Word 文档。
  • 使用 Document.FirstSection.Body.GetChild(NodeType.PARAGRAPH, int, boolean) 方法获取对起始和结束段落的引用。
  • 调用 ExtractContent(startPara, endPara, true) 方法将节点提取到一个对象中。
  • 调用 GenerateDocument(Document, extractedNodes) 辅助方法以创建一个包含提取内容的文档。
  • 最后,使用 Document.Save(string) 方法保存返回的文档。

以下代码示例演示如何通过提取 C# 中 Word 文档中第 7 段和第 11 段之间的文本来高效地处理大型 Word 文件。

通过不同类型的节点提取文本

您还可以提取不同类型节点之间的内容。为了演示,我们将提取段落和表格之间的内容,并将其保存到一个新的 Word 文档中。以下步骤执行此操作。

  • 使用 Document 类加载 Word 文档。
  • 使用 Document.FirstSection.Body.GetChild(NodeType, int, boolean) 方法获取对起始和结束节点的引用。
  • 调用 ExtractContent(startPara, endPara, true) 方法将节点提取到一个对象中。
  • 调用 GenerateDocument(Document, extractedNodes) 辅助方法以创建一个包含提取内容的文档。
  • 使用 Document.Save(string) 方法保存返回的文档。

以下代码示例演示如何在 C# 中提取段落和表格之间的文本。

基于样式提取段落之间的文本

现在让我们检查如何基于样式提取段落之间的内容。为了演示,我们将提取 Word 文档中第一个“Heading 1”和第一个“Heading 3”之间的内容。以下步骤演示如何在 C# 中实现这一目标。

  • 首先,使用 Document 类加载 Word 文档。
  • 然后,使用 ParagraphsByStyleName(Document, “Heading 1”) 辅助方法将段落提取到一个对象中。
  • 使用 ParagraphsByStyleName(Document, “Heading 3”) 辅助方法将段落提取到另一个对象中。
  • 调用 ExtractContent(startPara, endPara, true) 方法,并将两个段落数组中的第一个元素作为前两个参数传递。
  • 调用 GenerateDocument(Document, extractedNodes) 辅助方法以创建一个包含提取内容的文档。
  • 最后,使用 Document.Save(string) 方法保存返回的文档。

以下代码示例演示如何基于样式提取段落之间的内容。

阅读更多关于文本提取的信息

您可以通过 这篇 文档文章探索 .NET API 的 Word 文档文本提取 的其他场景。

获取免费 Word 文本提取库

您可以获得 免费的临时许可 以便在没有评估限制的情况下提取文本。

结论

Aspose.Words for .NET 是一个多功能库,简化了 C# 从 Word 中提取文本以保留格式 的过程。凭借其广泛的功能和易于使用的 API,您可以高效处理 Word 文档并自动化不同的 在 C# 文本提取中处理特殊字符 场景。无论您是在构建需要处理 Word 文档的应用程序,还是单纯地提取文本,Aspose.Words for .NET 都是开发者的宝贵工具。

您可以通过 文档 探索 Aspose.Words for .NET 的其他功能。如果您有任何问题,请随时通过我们的 论坛 与我们联系。

另见

提示: 您可能希望检查 Aspose PowerPoint 到 Word 转换器,因为它演示了流行的演示文稿到 Word 文档的转换过程。