Home > Artigos > Frameworks, APIs, Instalação e Configuração >
Trabalhando com arquivos Microsoft Word em Java
Publicado por paulofernandesjr em 16/08/2009 - 5.160 visualizações
Introdução
Neste artigo explicarei como manipular documentos do Microsoft Word 97-2003, utilizando uma excelente API chamada Jakarta POI http://poi.apache.org/. Neste artigo falarei somente até a versão 2003 do Microsoft Word, pois na versão 2007 ele trabalha de uma forma diferente.
Problema
Vamos simular uma situação onde a esta aplicação poderia ser utilizada. Tenho um contrato que é padrão para todos os clientes, mas eu preciso inserir em cada contrato, o nome, o valor do contrato e o valor em porcentagem da multa e enviar para efeito de teste, salvar o contrato com o nome da empresa em formato pdf. Outra possibilidade do problema seria criar um e-mail marketing e enviar por e-mail para uma lista de usuários cadastrados.
A API Jakarta POI
Esta API é fantástica, tem diversas funções e não serve apenas para trabalhar com arquivos do Microsoft Word, serve também para arquivos do Microsoft Excel, Microsoft Visio, Microsoft PowerPoint, entre outros, a versão estável até o momento da escrita deste artigo era a versão 3.2. Os desenvolvedores estão trabalhando na versão 3.5 que suportará arquivos Microsoft Office 2007. No exemplo do projeto eu explicarei algumas das funções da API, pode até ser que eu fuja um pouco da solução do problema, porém creio que ficará fácil para entender como trabalhar com a API.
Solução
A solução para o problema não é tão complexa, basta você abrir o arquivo Microsoft Word desejado, encontrar os trechos onde deseja que sejam as palavras sejam substituídas, e substituí-las. Para isso eu colocarei no meio do meu arquivo contrato.doc umas “TAGS PERSONALIZADAS”, estas TAGS poderiam ser quaisquer palavras, eu adotei um padrão para não correr o risco de alterar algo que não quisesse que fosse alterado. O padrão utilizado foi o seguinte:
#NOME_DO_CAMPO#
As minhas variáveis ficaram da seguinte forma no arquivo contrato.doc
#NOME_EMPRESA#
#VALOR_CONTRATO#
#VALOR_MULTA#
Sobre o contrato, ele não é especifico para o que vou demonstrar, ele foi retirado do site http://www.sitecontabil.com.br/ e o link para download do contrato de exemplo é esse aqui: http://www.sitecontabil.com.br/modelos_contrato/0338.htm. Utilizei apenas alguns espaços que não são exatamente para o que deveria, mas como o objetivo deste artigo é mostrar a aplicação funcionando, não vi muita necessidade em ter um exemplo que se encaixe perfeitamente com o artigo.
Código
Como o objetivo é mostrar o funcionamento da API Jakarta POI, e não sobre SWING ou Desenvolvimento WEB, fiz um código, que em minha opinião está bem didático e comentado, facilitando o entendimento. O código do projeto pode ser baixado do link a seguir:
Download do código fonte
Para o desenvolvimento foi necessário o download da biblioteca Jakarta POI, que está no link download do site da API, também está no arquivo do projeto.
No exemplo mostro como extrair o texto de duas possibilidades:
1ª usando o WordExtractor: fará com que você pegue a o conteúdo e armazene em uma String, no exemplo eu usei, StringBuilder, por ela ser mais rápida que a String o que facilitará ainda mais a substituição.
2ª usando o Range: que tem um método, muito eficiente que faz a modificação do texto através do método replaceText(String parametroABuscar, String parametroASubstituir).
Apenas para efeito de demonstração da API, adicionarei um parágrafo no começo e no final do Arquivo contendo os meus dados. Com isso o exemplo não só mostrará como substituir, mas também como adicionar conteúdo.
Como o objetivo não é como mostrar a geração de PDF, a parte do PDF está muito simples, deveria ser melhorada, mas isso é para outro artigo.
O exemplo foi desenvolvido utilizando Java 6, Eclipse Ganymede e NetBeans 6.5.
Conclusão
Esta API não se restringe apenas a arquivos Microsoft Word, como mencionei acima pode ser usada com outros formatos também, para maiores informações acesse o site do projeto: http://poi.apache.org/
Com isso encerro aqui o meu artigo, caso tenham alguma dúvida, podem me enviar um e-mail, que na medida do possível estarei respondendo, estou aberto a sugestões para próximos artigos.
Até o próximo pessoal.
Download do código fonte.
Sobre o autor:
Paulo Fernandes (paulofernandesjr@gmail.com) é formado em Tecnologia em Banco de Dados e cursa pós-graduação em Engenharia de Software na PUC-SP. Possui mais 5 anos de experiência em TI. Na área de programação, trabalha com as linguagens PHP, JAVA, HTML, xHTML, CSS, Javascript e para os projetos utiliza UML para documentação.
- Documento do Word
- Consulta em arquivos do Word
- Java + word + excel
- Qual o caminho ?
- Como exibir um texto formatado pelo word (cores e tamanhos)
- Mensagens que não tinham tópicos
- Java chama MS Word
- Planilha do Excel + Java
- word para pdf
- Download do pacote com as classes do POI
- classes para arquivos octais

