Este artigo aborda várias abordagens para localizar e substituir texto em documentos do Word usando C# em aplicativos .NET ou .NET Core.
Localizar e substituir é um recurso bastante útil do MS Word para localizar e substituir rapidamente o texto desejado nos documentos. Torna-se mais prático e economiza tempo quando você está trabalhando com documentos mais longos. Nos casos em que você precisar localizar e substituir texto em centenas de documentos do Word ou precisar automatizar esse processo, você definitivamente optará por fazê-lo programaticamente. Portanto, neste artigo, mostrarei como localizar e substituir texto em documentos do Word programaticamente em diferentes cenários usando C#. Depois de ler este artigo, você será capaz de:
- localizar e substituir texto no Word DOC/DOCX usando C#
- localizar e substituir palavras semelhantes no documento do Word
- localizar e substituir texto usando Regex
- localizar e substituir texto no cabeçalho/rodapé do documento do Word
- localizar e substituir texto por meta-caracteres no documento do Word
Biblioteca C# para localizar e substituir texto em um documento do Word
Em primeiro lugar, crie um novo projeto C# (Console, ASP.NET, etc.) no Visual Studio e instale Aspose.Words for .NET via NuGet Package Manager ou Package Manager Console.
Instalando pelo Gerenciador de Pacotes NuGet
Instalando pelo Console do Gerenciador de Pacotes
PM> Install-Package Aspose.Words
Depois de instalar o Aspose.Words for .NET, vamos começar a localizar e substituir o texto no documento do Word a seguir.
Localizar e substituir texto em documentos do Word em C#
A seguir estão as etapas para localizar e substituir um texto específico em um documento do Word usando o Aspose.Words for .NET.
- Crie uma instância da classe Document e inicialize com o caminho do documento do Word.
- Localize e substitua texto usando o método Document.Range.Replace(string, string, FindReplaceOptions).
- Salve o documento usando o método Document.Save(string).
A classe FindReplaceOptions fornece várias opções para personalizar as operações de localizar/substituir. O exemplo de código a seguir mostra como localizar e substituir uma determinada palavra ou cadeia de caracteres em um documento do Word usando C#.
// Carregar um documento docx do Word
Document doc = new Document("document.docx");
// Localizar e substituir texto no documento
doc.Range.Replace("sad", "[replaced]", new FindReplaceOptions(FindReplaceDirection.Forward));
// Salve o documento do Word
doc.Save("Find-And-Replace-Text.docx");
Resultado
Localizar e substituir palavras semelhantes em documentos do Word usando C#
Você também pode personalizar a API para encontrar palavras semelhantes e substituí-las por uma palavra específica. Por exemplo, você pode encontrar as palavras “triste” e “louco” e substituí-las por uma única palavra. O exemplo de código a seguir mostra como localizar e substituir palavras semelhantes no documento do Word usando C#.
// Carregar um documento docx do Word
Document doc = new Document("document.docx");
FindReplaceOptions options = new FindReplaceOptions();
options.MatchCase = true;
// Localizar e substituir texto no documento
doc.Range.Replace(new Regex("[B|S|M]ad"), "[replaced]", options);
// Salve o documento do Word
doc.Save("Find-And-Replace-Multiple-Words.docx");
Resultado
Localizar e substituir texto usando Regex em C#
Pode ser o caso em que você deseja localizar e substituir o texto que aparece em um padrão específico. Por exemplo, você precisa ocultar/substituir todos os IDs de email em um documento do Word. Nesses casos, você pode criar uma expressão regular para IDs de e-mail e passá-la para o método Document.Range.Replace(Regex, string, FindReplaceOptions).
O exemplo de código a seguir mostra como localizar e substituir texto com base em um padrão no documento do Word.
// Carregar um documento docx do Word
Document doc = new Document("document.docx");
FindReplaceOptions options = new FindReplaceOptions();
options.FindWholeWordsOnly = true;
// Definir expressão regular para IDs de e-mail
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])?");
// Localizar e substituir texto no documento
doc.Range.Replace(EmailRegex, "[replaced]", options);
// Salve o documento do Word
doc.Save("Find-And-Replace-Text-Using-Regex.docx");
Resultado
Localizar e substituir texto no cabeçalho/rodapé do documento do Word usando C#
Você também pode localizar e substituir texto nas seções de cabeçalho ou rodapé de um documento do Word usando a classe HeaderFooter. O método HeaderFooter.Range.Replace(string, string, FindReplaceOptions) é usado para essa finalidade. O exemplo de código a seguir mostra como substituir o texto no cabeçalho/rodapé do documento do Word em C#.
// Carregar um documento do Word
Document doc = new Document("document.docx");
// Acesse o cabeçalho/rodapé do documento do Word
HeaderFooterCollection headersFooters = doc.FirstSection.HeadersFooters;
HeaderFooter footer = headersFooters[HeaderFooterType.FooterPrimary];
// Definir opções
FindReplaceOptions options = new FindReplaceOptions
{
MatchCase = false,
FindWholeWordsOnly = false
};
// Substituir o texto no rodapé do documento do Word
footer.Range.Replace("This is footer of the document.", "Copyright (C) 2020 by Aspose Pty Ltd.", options);
// Salve o documento do Word
doc.Save("Find-And-Replace-Text-in-Footer.docx");
Resultado
Localizar e substituir texto por metacaracteres em documentos do Word usando C#
Pode haver um cenário em que um determinado texto ou frase seja composto por vários parágrafos, seções ou páginas. Nesses casos, o método simples de localizar e substituir não funcionaria efetivamente e teremos que lidar com as quebras de parágrafos, quebras de seção ou quebras de página. Para isso, o Aspose.Words permite que você use os seguintes meta-caracteres na string de pesquisa ou na string de substituição:
- &p: quebra de parágrafo
- &b: quebra de seção
- &m: quebra de página
- &l: quebra de linha
O exemplo de código a seguir mostra como localizar e substituir o texto por uma quebra de parágrafo em um documento do Word.
// Carregar um documento docx do Word
Document doc = new Document("document.docx");
// Definir opções
FindReplaceOptions options = new FindReplaceOptions
{
MatchCase = false,
FindWholeWordsOnly = false
};
// Substituir texto por quebra de parágrafo
doc.Range.Replace("First paragraph ends.&pSecond paragraph starts.", "[replaced]", options);
// Salve o documento do Word
doc.Save("Find-And-Replace-Text-Paragraph-Break.docx");
Resultado
Conclusão
Este artigo aborda algumas maneiras úteis de localizar e substituir texto em um documento do Word com base em palavras, frases e padrões regex correspondentes ou semelhantes programaticamente. Esses recursos não apenas automatizam o processo de substituição de texto, mas também economizam muito tempo e esforço necessários na operação manual de localização e substituição em documentos do Word. Você pode aprender mais sobre a Biblioteca de Palavras do Aspose usando documentação.
Artigos relacionados
- Localizar e substituir texto em documentos do Word usando Java
- Automação do .NET Word - Crie documentos ricos do Word em C#
Dica: Você pode estar interessado em um Conversor de Texto para GIF gratuito que permite gerar animações a partir de textos.