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

Документы Microsoft Word являются основным средством для создания и обмена текстовым контентом. Если вы разрабатываете приложения на C#, которые взаимодействуют с документами Word, вам может понадобиться извлечь текст из документов Word с помощью C# в ASP.NET, при этом сохраняя форматирование. Независимо от того, анализируете ли вы текст, извлекаете определенные разделы или объединяете контент в один документ, это руководство покажет вам, как эффективно извлекать текст из документов Word с использованием лучшей библиотеки C# для извлечения текста из документов Word.

Содержание

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

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

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

PM> Install-Package Aspose.Words

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

Документ MS Word состоит из различных элементов, таких как абзацы, таблицы и изображения. Следовательно, требования к извлечению текста могут различаться в зависимости от сценария. Например, вам может понадобиться извлечь текст из отсканированного документа Word на C# или извлечь текст из файла Word с помощью C# .NET. Каждый элемент в документе Word представлен как узел, с которым вы будете взаимодействовать в процессе извлечения. Давайте рассмотрим, как извлекать текст из документов Word, эффективно обрабатывая форматирование текста во время извлечения на C#.

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

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

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

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

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

Полная реализация метода ExtractContent, который точно извлекает текст из защищенных документов Word на C#, выглядит следующим образом:

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

Теперь мы готовы использовать эти методы и извлекать текст из документов Word с помощью C#.

Извлечение текста между абзацами документа 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).

Вот пример кода, демонстрирующий, как извлекать текст из больших файлов Word, извлекая содержимое между 7-м и 11-м абзацами:

Извлечение текста между различными типами узлов

Вы также можете извлекать содержимое между различными типами узлов. Например, давайте извлечем содержимое между абзацем и таблицей и сохраним его в новом документе 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).

Вот пример кода, демонстрирующий, как извлекать содержимое между абзацами на основе стилей:

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

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

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

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

Заключение

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

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

Также смотрите

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