Ler arquivos do office com Java
Publicado há 815 dias atrás
No passado existiu uma situação no projeto, em que existiam vários documentos de projeto (guia, arquitetura, requisitos, manual, etc.), vindo de diferentes fontes (diretório de backup, cdrom), e são documentos office (doc, xls, ppt), e vários documentos repetidos, mas de origens diferentes.
Então como saber qual é o último arquivo e remover os antigos ?
Uma maneira é abrir cada arquivo e olhar nas propriedades do mesmo, mas fazer isso manualmente com cerca de 300 arquivos, poxa não sou mais estagiário para isso :-D (nada contra os estagiários).
Então fiz um programa em java, que usa a API SDK do OpenOffice para ler estas propriedades e mostrar as datas da última modificação e o autor.
Claro que é possível usá-lo para ler qualquer outra propriedade ou expandir para outros usos.
Atualmente a pesquisa é efetuada nos seguintes arquivos com extensão: sxw doc xls odt ods pps odt odp ppt
Altere o DocViewer.java para adicionar outras extensões.
Faça o download do código fonte: DocViewer.java
(remova a extensão .txt)
Requerimentos:
Em tempo de compilação é necessário as seguintes bibliotecas:
$OO_HOME/program/classes/juh.jar $OO_HOME/program/classes/jurt.jar $OO_HOME/program/classes/jut.jar $OO_HOME/program/classes/ridl.jar $OO_HOME/program/classes/unoil.jar
A variável OO_HOME aponta para o diretório de instalação do OpenOffice. No meu caso uso o BrOffice, que está instalado em /opt/broffice.org2.3
Em runtime:
- Instalação do OpenOffice
- X Virtual Frame Buffer (Xvfb)
- Java (testei com a versão 5)
Compilação
Essa parte é simples, use sua IDE favorita ou o javac
javac -classpath /opt/broffice.org2.3/program/classes/\* src/claudius/DocViewer.java
Usei o classpath wildcards, válido apenas para o Java 6
Uso
Para colocar o openoffice em modo servidor, usei um servidor X virtual, isso é para ambiente servidor, onde não é necessário ter um monitor nem interface gráfica. No caso foi instalado o X Virtual Frame Buffer.
Se não puder instalar um servidor X virtual e iniciar a aplicação openoffice manualmente, tudo bem, basta não informar qual o servidor X a ser usado. Veja o exemplo abaixo:
Com servidor X virtual
Xvfb :5 -screen 0 800x600x16 &
/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -display :5 -headless -norestore -invisible &
Sem servidor X virtual
/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -headless -norestore -invisible &
Invocar o programa Java
A sintaxe para invocar é
java -classpath $CP claudius.DocViewer <path do arquivo ou diretório>
O classpath $CP é o mesmo usado na compilação, em adição ao diretório da classe DocViewer compilada.
O path, pode ser um arquivo único ou diretório, que neste último caso irá pesquisar nos subdiretórios também.
Exemplo
java -classpath build/classes/:/opt/broffice.org2.3/program/classes/\* claudius/DocViewer arquivo-projeto.odt
O resultado:
dir = /home/claudio/resources/palestras/2007/10_justjava file = diagnostico2.odp Modified by: Claudio Miranda 5/10/2007 17:46:8
Se essa dica foi útil para você, deixe uma mensagem comentando como isso lhe ajudou.
leia mais...
Ainda neste blog:
Conversão de charset para UTF-8
Resolvendo memory leak - Identificando o comedor de memória
Ir trabalhar de bicicleta
Completar números com zeros a esquerda
Livros Java e Revistas JavaMagazine de graça
Descobrindo senha de banco de dados
Controle sua apresentação OO pelo seu telefone celular
Novos desafios, consultor em C#
Plugin NetBeans para configuração de inicialização
Mauricio Leal e Bruno Ghisi em podcast do java.net
Qual é a quantidade máxima de threads suportada por um sistema ?
Palestra "Performance em Aplicações Java" disponível
Oportunidade de trabalho na Summa Technologies
Quantidade de threads por processo
Vídeo do SouJava
Oportunidade de trabalho na Summa Technologies
Conexão Java 2007 - Palestra sobre performance
Como encontrar uma classe ?
Ferramentas de diagnóstico em performance na prática
450 GB de HEAP
Mais oportunidades na Summa Technologies
JustJava 2007, Palestras, tutoriais, discussões técnicas
Palestras do JustJava em Análise
Veja a programação do JustJava 2007 no seu celular
JustJava 2007, nos vemos por lá
Reunião do SouJava - Especial JavaOne
Videos do JavaOne 2008
Jetty no Solaris 10
Tradução de aplicações
Slides das palestras do JustJava 2007, disponíveis para download
Só Java
Novo serviço de hosting VPS
Evento Java em Cuiabá, 4o JAVAC
Setembro: Mês de Java no Brasil
Javali International Meeting e OpenSolaris Day, de graça
Quer dar uma palestra no JustJava 2008 ?
Videocast do Javali e OpenSolaris
Conferência no Skype
Os nerds também amam
Como reduzir espaço em disco do JDK em ambiente servidor
Pedalar a noite no pedalnoturnodf
Reunião SouJava em São Paulo, dia 26/02
Grupos do SouJava no Linkedin
Voltei e algumas dicas
Palestras em 2008, eventos marcados
HotSpot Internals
Ceritificado MySQL Developer I
Acontecimentos no Jazoon 2008
Reunião SouJava, Hoje 14/agosto/2008
Palestra no Jazoon
Categoria: Java Blog: Blog do Claudio Miranda Visualização: Abrir com frame

