Registrar    Login   Sobre o InfoBlogs  

Ler arquivos do office com Java    


Dicas

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