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

Microsoft Word 文档是创建和共享文本内容的基础。如果您正在开发与 Word 文档交互的 C# 应用程序,您可能需要在 ASP.NET 中 使用 C# 从 Word 文档中提取文本,同时确保格式得以保留。无论您是在分析文本、提取特定部分,还是将内容合并到单个文档中,本指南将向您展示如何使用 最佳 C# 库进行 Word 文档文本提取 高效提取 Word 文档中的文本。

目录

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

Aspose.Words for .NET 是一个功能丰富、易于使用的库,旨在处理 Word 文档。它提供了一整套功能,包括 .NET Word 文档文本提取、文档创建、操作和转换。Aspose.Words for .NET 是开发者寻求 高效 C# Word 文本提取 的宝贵工具。

您可以 下载 DLL 或直接通过 NuGet 使用包管理控制台安装该库:

PM> Install-Package Aspose.Words

理解 Word 文档中的文本提取

MS Word 文档由各种元素组成,例如段落、表格和图像。因此,文本提取需求可能会根据场景而有所不同。例如,您可能需要 在 C# 中从扫描的 Word 文档中提取文本使用 C# .NET 从 Word 文件中提取文本。Word 文档中的每个元素都表示为一个节点,您将在提取过程中与之交互。让我们探讨如何在有效 处理 C# 文本提取中的 Word 格式 的同时,从 Word 文档中提取文本。

从 Word 文档中提取文本

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

  1. 定义要包含在文本提取过程中的节点。
  2. 提取指定节点之间的内容(包括或排除起始和结束节点)。
  3. 克隆提取的节点以创建一个包含提取内容的新 Word 文档。

让我们创建一个名为 ExtractContent 的方法,该方法将接受节点和其他文本提取参数。该方法将解析文档并克隆节点。以下是我们将传递给该方法的参数:

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

以下是 ExtractContent 方法的完整实现,准确 从受保护的 Word 文档中提取文本

此外,ExtractContent 方法还需要一些辅助方法来促进文本提取操作:

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

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

要提取 Word DOCX 文档中两个段落之间的内容,请按照以下步骤操作:

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

以下是一个代码示例,演示如何通过提取第 7 段和第 11 段之间的内容来从大型 Word 文件中提取文本:

提取不同类型节点之间的文本

您还可以提取不同类型的节点之间的内容。例如,让我们提取一个段落和一个表格之间的内容,并将其保存到一个新的 Word 文档中。请按照以下步骤操作:

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

以下是一个代码示例,说明如何在 C# 中提取段落和表格之间的文本:

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

现在让我们探讨如何基于样式提取段落之间的内容。在此示例中,我们将提取 Word 文档中第一个 “Heading 1” 和第一个 “Heading 3” 之间的内容。请按照以下步骤操作:

  1. 使用 Document 类加载 Word 文档。
  2. 使用 ParagraphsByStyleName(Document, “Heading 1”) 辅助方法将段落提取到一个对象中。
  3. 使用 ParagraphsByStyleName(Document, “Heading 3”) 辅助方法将段落提取到另一个对象中。
  4. 调用 ExtractContent(startPara, endPara, true) 方法,将两个段落数组中的第一个元素作为参数传递。
  5. 使用 GenerateDocument(Document, extractedNodes) 辅助方法创建一个包含提取内容的文档。
  6. 最后,使用 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 文档的转换过程。