В этой статье рассматриваются различные подходы к поиску и замене текста в документах Word с помощью C# в приложениях .NET или .NET Core.
Найти и заменить — довольно полезная функция MS Word для быстрого поиска и замены нужного текста в документах. Это становится более удобным и экономит время, когда вы работаете с более длинными документами. В тех случаях, когда вам нужно найти и заменить текст в сотнях документов Word или вам нужно автоматизировать этот процесс, вы определенно решите сделать это программно. Итак, в этой статье я покажу вам, как программно находить и заменять текст в документах Word в различных сценариях с помощью C#. Прочитав эту статью, вы сможете:
- найти и заменить текст в Word DOC/DOCX с помощью C#
- найти и заменить похожие слова в документе Word
- найти и заменить текст с помощью Regex
- найти и заменить текст в верхнем/нижнем колонтитуле документа Word
- найти и заменить текст метасимволами в документе Word
Библиотека С# для поиска и замены текста в документе Word
Прежде всего, создайте новый проект C# (Console, ASP.NET и т. д.) в Visual Studio и установите Aspose.Words for .NET через диспетчер пакетов NuGet или консоль диспетчера пакетов.
Установка через диспетчер пакетов NuGet
Установка через консоль диспетчера пакетов
PM> Install-Package Aspose.Words
После того, как мы установили Aspose.Words для .NET, давайте начнем искать и заменять текст в следующем документе Word.
Поиск и замена текста в документах Word на C#
Ниже приведены шаги по поиску и замене определенного текста в документе Word с помощью Aspose.Words для .NET.
- Создайте экземпляр класса Document и инициализируйте его путем к документу Word.
- Найдите и замените текст с помощью метода Document.Range.Replace(string, string, FindReplaceOptions).
- Сохраните документ методом Document.Save(string).
Класс FindReplaceOptions предоставляет различные параметры для настройки операций поиска/замены. В следующем примере кода показано, как найти и заменить определенное слово или строку в документе Word с помощью C#.
// Загрузите документ Word docx
Document doc = new Document("document.docx");
// Поиск и замена текста в документе
doc.Range.Replace("sad", "[replaced]", new FindReplaceOptions(FindReplaceDirection.Forward));
// Сохраните документ Word
doc.Save("Find-And-Replace-Text.docx");
Выход
Поиск и замена похожих слов в документах Word с помощью C#
Вы также можете настроить API для поиска похожих слов и замены их определенным словом. Например, вы можете найти слова «грустный» и «безумный» и заменить их одним словом. В следующем примере кода показано, как найти и заменить похожие слова в документе Word с помощью C#.
// Загрузите документ Word docx
Document doc = new Document("document.docx");
FindReplaceOptions options = new FindReplaceOptions();
options.MatchCase = true;
// Поиск и замена текста в документе
doc.Range.Replace(new Regex("[B|S|M]ad"), "[replaced]", options);
// Сохраните документ Word
doc.Save("Find-And-Replace-Multiple-Words.docx");
Выход
Найти и заменить текст с помощью регулярных выражений в С#
Может быть случай, когда вы хотите найти и заменить текст, который появляется в определенном шаблоне. Например, вам нужно скрыть/заменить все идентификаторы электронной почты в документе Word. В таких случаях вы можете создать регулярное выражение для идентификаторов электронной почты и передать его методу Document.Range.Replace(Regex, string, FindReplaceOptions).
В следующем примере кода показано, как найти и заменить текст на основе шаблона в документе Word.
// Загрузите документ Word docx
Document doc = new Document("document.docx");
FindReplaceOptions options = new FindReplaceOptions();
options.FindWholeWordsOnly = true;
// Установите регулярное выражение для идентификаторов электронной почты
Regex EmailRegex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
// Поиск и замена текста в документе
doc.Range.Replace(EmailRegex, "[replaced]", options);
// Сохраните документ Word
doc.Save("Find-And-Replace-Text-Using-Regex.docx");
Выход
Найти и заменить текст в верхнем/нижнем колонтитуле документа Word с помощью С#
Вы также можете найти и заменить текст в верхнем или нижнем колонтитуле документа Word с помощью класса HeaderFooter. Для этого используется метод HeaderFooter.Range.Replace(string, string, FindReplaceOptions). В следующем примере кода показано, как заменить текст в верхнем или нижнем колонтитуле документа Word на C#.
// Загрузите документ Word
Document doc = new Document("document.docx");
// Доступ к верхнему/нижнему колонтитулу документа Word
HeaderFooterCollection headersFooters = doc.FirstSection.HeadersFooters;
HeaderFooter footer = headersFooters[HeaderFooterType.FooterPrimary];
// Установить параметры
FindReplaceOptions options = new FindReplaceOptions
{
MatchCase = false,
FindWholeWordsOnly = false
};
// Заменить текст в нижнем колонтитуле документа Word
footer.Range.Replace("This is footer of the document.", "Copyright (C) 2020 by Aspose Pty Ltd.", options);
// Сохраните документ Word
doc.Save("Find-And-Replace-Text-in-Footer.docx");
Выход
Поиск и замена текста метасимволами в документах Word с использованием C#
Может быть сценарий, когда конкретный текст или фраза состоит из нескольких абзацев, разделов или страниц. В таких случаях простой метод поиска и замены не будет работать эффективно, и нам придется обрабатывать разрывы абзацев, разделов или страниц. Для этого Aspose.Words позволяет использовать в строке поиска или строке замены следующие метасимволы:
- &p: разрыв абзаца
- &b: разрыв раздела
- &м: разрыв страницы
- &l: разрыв строки
В следующем примере кода показано, как найти и заменить текст разрывом абзаца в документе Word.
// Загрузите документ Word docx
Document doc = new Document("document.docx");
// Установить параметры
FindReplaceOptions options = new FindReplaceOptions
{
MatchCase = false,
FindWholeWordsOnly = false
};
// Заменить текст разрывом абзаца
doc.Range.Replace("First paragraph ends.&pSecond paragraph starts.", "[replaced]", options);
// Сохраните документ Word
doc.Save("Find-And-Replace-Text-Paragraph-Break.docx");
Выход
Вывод
В этой статье рассматриваются некоторые полезные способы программного поиска и замены текста в документе Word на основе совпадающих или похожих слов, фраз и шаблонов регулярных выражений. Эти функции не только автоматизируют процесс замены текста, но и экономят много времени и усилий, необходимых для ручного поиска и замены в документах Word. Вы можете узнать больше о библиотеке Word от Aspose, используя документацию.
Статьи по Теме
- Поиск и замена текста в документах Word с помощью Java
- .NET Word Automation — создание форматированных документов Word на C#
Совет: вас может заинтересовать бесплатный конвертер текста в GIF, который позволяет создавать анимацию из текста.