Editando documentos do Word com .NET

Marcio Nizzola
4 min readDec 13, 2023

--

Editando documentos do Word com .NET

Hoje é um post simples, mas para quem acha complicado programar com C# fica o exemplo ! É só utilizar a biblioteca certa que temos soluções muito fáceis para problemas do dia a dia !

Chegou o fim de ano e precisei preencher um monte de formulários de banca de TCC na escola, tinha que preencher formulários com vários dados como aluno, tema do trabalho entre outras coisas, fiquei pensando aqui e iria levar talvez uma ou duas horas nessa tarefa ! Mas como dizia um antigo chefe meu “Programador bom é o programador preguiçoso” então resolvi criar um código para gerar os arquivos e preencher de uma forma mais simples e perdi só uns 15 minutos !

Vamos ao exemplo:

Tenho o seguinte cabeçalho do arquivo doc para preencher, com estes dados que serão preenchidos para cada aluno da turma.

Cada turma tem um tema diferente, para 20 alunos, preenchendo à mão dá um certo trabalho, se é para perder tempo….por que não perder fazendo uma solução com programação?

Então vamos lá, criei um código utilizando uma biblioteca que encontrei na primeira pesquisa google que fiz por bibliotecas free para editar arquivos docx !

Podemos encontrá-la no package manager ou instalar via prompt de comando.

Caso prefira linha de comando….fique à vontade

dotnet add package DocX --version 2.5.0

Verifiquei que a biblioteca está um pouco desatualizada pois foi feita para .net 5, contendo um item inseguro, mas isso não seria um problema, pois agora quero gerar só gerar o docx !

Para isto, eu criei um console app, depois dentro dele criei uma pasta docs e dentro desta pasta eu coloquei o arquivo original para que seja lido pela aplicação, é importante clicar no mesmo e apertar F4 para configurar que ele seja copiado toda vez que a aplicação for compilada.

Neste caso, a aplicação é um simples console, abaixo temos o código o qual irei explicar em seguida:

O problema era criar uma lista de alunos e realizar o preenchimento com o nome de cada um.

Então na linha 8, foi escrita uma string com os nomes dos alunos separados por vírgulas.

Na linha 9 transformamos a string em um array de alunos, através do comando Split, separando-os pela vírgula.

Na linha 11, criamos um loop do tipo “foreach” que irá percorrer esta lista de alunos, onde dentro temos a lógica do preenchimento que utilizando a biblioteca permite ler um arquivo chamado “ficha.docx” na linha 13.

Nas linhas subsequentes 16 a 19 utilizando o objeto do documento com a sua função ReplaceText que irá substituir o texto colocado no documento trocamos as tags marcadas no documento que são “#nome”, “#curso”, “#professor” e “#tema” pelas variáveis da aplicação.

document.ReplaceText(new StringReplaceTextOptions() { SearchValue = "#nome", NewValue = aluno });

O detalhe fica pela forma como programamos a substituição que neste comando é feita pela classe “StringReplaceTextOptions” especificando o texto procurado “SearchValue” e o texto a substituí-lo em “NewValue”.

Depois na linha 21, é executado o comando que salvará o documento editado, com um novo nome e será concatenado com o nome do aluno gerando um novo arquivo.

document.SaveAs($"docs/Ficha Individual {aluno}.docx");

Pronto, é só executar o programa e dar uma olhada na pasta da aplicação, onde haverá um arquivo para cada aluno com os seus dados preenchidos !

Observações:

A biblioteca utilizada foi testada apenas em máquinas Windows e possui dependências desatualizadas, mas ainda funciona e é free. Existem outras bibliotecas com a mesma proposta, mas a minha idéia era resolver um problema em menos de 15 minutos !

Gostou do artigo? clique no ícone👏e me siga para ver as próximas publicações !! Quer ver mais conteúdos, acesse minhas redes através do Linktree: https://linktree.com/nizzola

Referências:

xceedsoftware/DocX: Fast and easy to use .NET library that creates or modifies Microsoft Word files without installing Word. (github.com)

--

--

Marcio Nizzola
Marcio Nizzola

Written by Marcio Nizzola

Microsoft MVP | Software Architect na CI&T | Prof. da Etec Itu | Membro Fundador da Comunidade Itu Developers.

No responses yet