Извлечение текста из документов MS Word на C#

Документы Microsoft Word являются основным инструментом для создания и обмена текстовым контентом. Если вы разрабатываете приложения на C#, которые взаимодействуют с этими документами, вам может понадобиться извлекать текст из них. Это может быть необходимо для таких целей, как анализ текста или извлечение определенных разделов документа для компиляции в новый. В этом блоге мы погрузимся в методы извлечения текста из документов Word на C#.

Содержание

Библиотека C# для извлечения текста

Aspose.Words для .NET — это мощная и удобная библиотека, предназначенная для работы с документами Word. Она предоставляет обширный набор функций, включая извлечение текста, создание, манипуляцию и конвертацию документов. С помощью Aspose.Words для .NET разработчики могут эффективно управлять различными аспектами документов Word, что делает ее незаменимым инструментом для ваших потребностей в разработке.

Чтобы начать, скачайте библиотеку или установите ее непосредственно из NuGet, используя следующую команду в консоли диспетчера пакетов:

PM> Install-Package Aspose.Words

Понимание извлечения текста в документах Word

Документ MS Word состоит из различных элементов, таких как абзацы, таблицы и изображения. Следовательно, требования к извлечению текста могут различаться в зависимости от конкретного случая использования. Вам может потребоваться извлечь текст между абзацами, закладками, комментариями и многим другим.

Каждый элемент в документе Word представлен как узел. Поэтому для эффективной обработки документа вам нужно будет работать с этими узлами. Давайте исследуем, как извлекать текст из документов Word в различных сценариях.

Пошаговое руководство по извлечению текста из документа Word

В этом разделе мы реализуем C# извлекатель текста для документов Word. Рабочий процесс извлечения текста будет включать следующие шаги:

  1. Определите узлы, которые нужно включить в процесс извлечения.
  2. Извлеките содержимое между указанными узлами (включая или исключая начальные и конечные узлы).
  3. Используйте клонированные извлеченные узлы для создания нового документа Word, содержащего извлеченное содержимое.

Давайте создадим метод с именем ExtractContent, который будет принимать узлы и другие параметры для выполнения извлечения текста. Этот метод будет анализировать документ и клонировать узлы на основе следующих параметров:

  • StartNode и EndNode: Эти параметры определяют начальные и конечные точки для извлечения содержимого. Они могут быть блочными (например, Paragraph, Table) или встроенными узлами (например, Run, FieldStart, BookmarkStart).
    • Для полей передайте соответствующий объект FieldStart.
    • Для закладок используйте узлы BookmarkStart и BookmarkEnd.
    • Для комментариев применяйте узлы CommentRangeStart и CommentRangeEnd.
  • IsInclusive: Этот параметр определяет, включены ли маркеры в извлечение. Если установлен в false и предоставлены одинаковые или последовательные узлы, будет возвращен пустой список.

Вот полная реализация метода ExtractContent для извлечения содержимого между указанными узлами:

Кроме того, некоторые вспомогательные методы требуются методу ExtractContent для упрощения операции извлечения текста:

Теперь, когда наши методы готовы, мы можем перейти к извлечению текста из документа Word.

Извлечение текста между абзацами документа Word

Чтобы извлечь содержимое между двумя абзацами в документе Word DOCX, выполните следующие шаги:

  1. Загрузите документ Word с помощью класса Document.
  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. Загрузите документ Word с помощью класса Document.
  2. Получите ссылки на начальные и конечные узлы, используя метод Document.FirstSection.Body.GetChild(NodeType, int, boolean).
  3. Вызовите ExtractContent(startPara, endPara, True) для извлечения узлов в объект.
  4. Используйте вспомогательный метод GenerateDocument(Document, extractedNodes) для создания документа с извлеченным содержимым.
  5. Сохраните новый документ с помощью Document.Save(string).

Вот пример кода для извлечения текста между абзацем и таблицей на C#:

Извлечение текста на основе стилей

Чтобы извлечь содержимое между абзацами на основе стилей, выполните следующие шаги. Для этой демонстрации мы извлечем содержимое между первым “Заголовком 1” и первым “Заголовком 3” в документе Word:

  1. Загрузите документ Word с помощью класса Document.
  2. Извлеките абзацы в объект, используя вспомогательный метод ParagraphsByStyleName(Document, “Heading 1”).
  3. Извлеките абзацы в другой объект, используя ParagraphsByStyleName(Document, “Heading 3”).
  4. Вызовите ExtractContent(startPara, endPara, True) с первыми элементами из обоих массивов абзацев.
  5. Используйте вспомогательный метод GenerateDocument(Document, extractedNodes) для создания документа с извлеченным содержимым.
  6. Сохраните новый документ с помощью Document.Save(string).

Вот пример кода для извлечения содержимого между абзацами на основе стилей:

Узнайте больше об извлечении текста

Изучите дополнительные сценарии извлечения текста из документов Word в этой статье документации.

Получите бесплатную библиотеку для извлечения текста из Word

Вы можете получить бесплатную временную лицензию для извлечения текста без ограничений на оценку.

Заключение

Aspose.Words для .NET — это универсальная библиотека, которая упрощает процесс извлечения текста из документов Word на C#. С ее обширными функциями и удобным API вы можете эффективно работать с документами Word и автоматизировать различные сценарии извлечения текста. Независимо от того, разрабатываете ли вы приложения, которые требуют обработки документов Word, или просто извлекаете текст, Aspose.Words для .NET является важным инструментом для разработчиков.

Чтобы узнать больше о функциях Aspose.Words для .NET, ознакомьтесь с документацией. Если у вас есть какие-либо вопросы, не стесняйтесь обращаться через наш форум.

См. также

Совет: Вы можете ознакомиться с конвертером Aspose PowerPoint в Word, который демонстрирует популярный процесс конвертации презентаций в документы Word.