Substituindo textos de um documento Word com C#

Fala galera, tudo certo?

Hoje vou mostrar como é fácil fazer edições em documentos Word (.doc ou .docx) e mais especificamente vou mostrar como substituir textos dentro de um documento, bora lá?

A ideia de escrever sobre isso surgiu quando surgiu a necessidade de enviar cartas para alguns clientes, e essas cartas já tinham um padrão pré definido, bastando apenas substituir alguns dados pessoais.

Imaginem que temos o seguinte arquivo:

2

O primeiro passo depois de criarmos a nossa aplicação C#, é instalar um pacote do NuGet chamado DocX, podemos fazer isso com o seguinte comando no Package Manager Console:

PM> Install-Package DocX -Version 1.3.0

 

Feito isso, o código para efetuarmos a leitura do nosso arquivo e a substituição das palavras é o seguinte:


string caminho = @"C:\Users\Vinicius Mussak\Desktop\ReplaceDocxExample\ReplaceDocxExample\";
static void Replace()
{
using(var documento = DocX.Load(caminho + "documento.docx"))
{
documento.ReplaceText("#nome", "Vinicius Mussak");
string mes = DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("pt-br"));
documento.ReplaceText("#mes", mes);
documento.SaveAs(caminho + "novo-documento.docx");
}
}

view raw

ReplaceDocx.cs

hosted with ❤ by GitHub

O resultado final é esse aqui:

3

Algumas coisas para comentar:

O método Load funciona de duas maneiras:

  1. Com um caminho físico, que é como estamos trabalhando. Dessa maneira, ele vai ler o arquivo de algum lugar no servidor por exemplo.
  2. Com um Stream, ou seja, ao invés de passarmos o caminho do arquivo, podemos passar o próprio arquivo já convertido em Stream.

O método SaveAs funciona da mesma maneira do método Load, ou seja, podemos salvar o arquivo editado de maneira física, ou colocá-lo novamente em uma Stream para fazer outras coisas com ele.

No exemplo estamos apenas substituindo palavras de um documento, mas a ferramenta é capaz de fazer muitas outras coisas em um documento, para saber mais, é só dar uma olhada da documentação aqui: https://github.com/xceedsoftware/docx

Belezura né?

Os códigos utilizados estão disponíveis no GitHub: https://github.com/vmussak/docx-replace-text

Por hoje é só isso, qualquer dúvida ou sugestão, estou à disposição! Até mais 😀

6 thoughts on “Substituindo textos de um documento Word com C#

  1. Robson Silva Brito de Moraes 06/11/2020 / 19:38

    Como faço para que o valor a ser substituido tenha quebra de linha passando os caracteres de \n?

    Gostar

    • viniciusmussak 22/04/2021 / 21:57

      Opa Robson!
      Você pode utilizar o método “new Break()” para quebrar uma linha 😀
      Abraço!

      Gostar

  2. Luis Sousa 03/12/2020 / 23:41

    Você acha que é possível ler dados de tabela em um documento word ? Se eu souber o padrão do documento, tem como eu ler os dados, armazenar em variáveis e usar na minha aplicação ?

    Gostar

    • viniciusmussak 22/04/2021 / 21:52

      É possível sim Luis! Já fiz isso em aplicações aqui! Caso queira posso te mandar um exemplo! Me dá um ping que conversamos!
      Abraço!

      Gostar

  3. Jhonatan Azevedo 15/04/2021 / 12:01

    Estou tentando rodar o código acima mas apresenta erro nesta linha using(var documento = DocX.Load(caminho + “documento.docx”)). Sabe me dizer se a biblioteca mudou algo ?

    Gostar

    • viniciusmussak 22/04/2021 / 21:51

      Opa Jhonatan! Tudo certo?
      Rapaz, até onde sei, não mudou não, já verificou se o caminho do documento está correto?
      Se quiser me dê um alô que podemos resolver juntos!
      Abraço!

      Gostar

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s