У цій статті розглядаються різні підходи до пошуку та заміни тексту в документах Word за допомогою C# у програмах .NET або .NET Core.
Знайти та замінити – це досить корисна функція MS Word для швидкого пошуку та заміни потрібного тексту в документах. Це стає більш зручним і економить час, коли ви працюєте з довшими документами. У випадках, коли вам потрібно знайти та замінити текст у сотнях документів Word або вам потрібно автоматизувати цей процес, ви обов’язково виберете зробити це програмно. Отже, у цій статті я покажу вам, як програмно знайти та замінити текст у документах Word у різних сценаріях за допомогою C#. Прочитавши цю статтю, ви зможете:
- знайти та замінити текст у Word DOC/DOCX за допомогою C#
- знайти та замінити схожі слова в документі Word
- знайти та замінити текст за допомогою Regex
- знайти та замінити текст у верхньому/нижньому колонтитулі документа Word
- знаходити та замінювати текст метасимволами в документі Word
Бібліотека C# для пошуку та заміни тексту в документі Word
Перш за все, створіть новий проект C# (Console, ASP.NET тощо) у Visual Studio та інсталюйте Aspose.Words for .NET через NuGet Package Manager або Package Manager Console.
Встановлення через диспетчер пакетів NuGet
Встановлення через консоль менеджера пакетів
PM> Install-Package Aspose.Words
Після того, як ми встановили Aspose.Words for .NET, давайте почнемо шукати та замінювати текст у наступному документі Word.
Пошук і заміна тексту в документах Word на C#
Нижче наведено кроки для пошуку та заміни певного тексту в документі Word за допомогою Aspose.Words for .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");
Вихід
Пошук і заміна тексту за допомогою Regex у C#
Може бути випадок, коли ви хочете знайти та замінити текст, який відображається в певному шаблоні. Наприклад, вам потрібно приховати/замінити всі ідентифікатори електронної пошти в документі 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 за допомогою C#
Ви також можете знайти та замінити текст у розділах верхнього або нижнього колонтитулів документа 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: розрив розділу
- &m: розрив сторінки
- &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#
Порада. Вас може зацікавити безкоштовний Text to GIF Converter, який дозволяє створювати анімацію з текстів.