Semana passada, em um de nossos projetos, precisamos gerar alguns gráficos no Excel usando Java. Não para nossa surpresa, o suporte a esta funcionalidade do formato Excel é extremamente limitada para aqueles que trabalham com Java. Basicamente, vimos duas opções:
- Criar um modelo pré-definido com um gráfico já pré-criado e, em seguida, simplesmente preencher algumas células do gráfico em questão.
- Utilizar uma biblioteca como o JExcel, que permite acesso via COM ao Excel, permitindo assim automatizar sua execução.
Para o nosso caso, dado que nossos gráficos serão criados dinâmicamente, a primeira opção foi fácilmente excluida. Isto porque o número de séries de nossos gráficos poderia sofrer inúmeras variações, isto sem mencionar do próprio tipo de gráfico a ser gerado.
A segunda, bem: será que valeria a pena jogar fora a portabilidade que ganhamos com Java? E outra: gerar arquivos do Excel via automação é extremanete leeeeento.
Sendo assim, optamos por adotar o formato ODF. Buscamos algumas bibliotecas e acabamos por optar pelo ODFDOM. A primeira vista, pareceu ser a solução ideal. Navegando rápidamente pela estrutura de classes, vimos todos os componentes de que precisávamos. Já na hora de usar a API…
As coisas nem de longe aparentavam ser tão fáceis assim. Na realidade, gerar arquivos ODF é muito mais complicado do que haviamos imaginado. isto porque a biblitoeca ODFDOM é fortemente focada no XML, e não no documento em si. Pela interface que possuimos com a biblioteca, o tempo inteiro acessamos nós em um documento XML, o que, convenhamos, nem de longe é a maneira mais simples de se visualizar o documento final que se visa criar via código.
(claro, sei que o projeto ainda está na versão 0.6.x, mas mesmo assim, para as nossas necessidades atuais, não é suficiente).
Como resultado, optamos por criar uma nova camada baseada no ODFDOM para a geração de arquivos neste formato. Por enquanto, estamos chamando esta nova API de ODFEasy. Esta possuirá uma interface voltada mais para a geração do documento em si. O código gerado por esta biblioteca, acreditamos, será muito mais simples de ser compreendido do que aquele que produzimos usando o ODFDOM.
(Acredito que a existência de uma API simplificada como a ODFEasy seja essencial para a adoção bem sucedida do formato ODF. Só para lembrar, uma as principais razões pelas quais o Microsoft Office é adotado consiste justamente na facilidade que possuimos de gerar documentos programáticamente.
E, convenhamos, a adoção do ODF trará ganhos para todos, visto que se trata de um formato do qual possuimos 100% de conhecimento a respeito, ao contrário do que ocorre com o Microsoft Office)
Inicialmente, nosso foco consiste na geração de planilhas (influenciado pela nossa necessidade atual) e gráficos. Posteriormente, conforme nossas necessidades venham a evoluir, pretendemos abranger outros tipos de documento.
O projeto ainda não possui um site (pretendo construi-lo no decorrer desta semana) para que possamos liberar o código fonte (cuja licença será a LGPL), mas já aproveito a ocasião para convidá-los a participar deste projeto, bastando para isto entrar em contato comigo a partir deste blog.
Sendo assim, nesta semana podem esperar mais posts sobre o desenvolvimento deste projeto neste blog (e, com isto, maiores informações sobre como é de fato o formato ODF).