Opinião: Programa para gerar relatórios em EXCEL seria viável?

2 respostas
diego_qmota

Seria possível criar em JAVA um programa que gerasse relatórios manipulando templates do EXCEL?

Os relatórios deveriam sair em EXCEL (com gráficos, várias planilhas, etc), ou seja, deveria permitir uma manipulação e personalização razoáveis do arquivo XLS para atender às expectativas dos clientes. Ou seja, não bastaria só jogar os dados no template do Excel (isso eu já fiz, mas pode ser pouco futuramente), deveria ter capacidades maiores para gerar/manipular o arquivo cumprindo especificações solicitadas por clientes.
Não estou sendo exigente… é que precisava saber para iniciar a criação de um novo projeto tendo a certeza que existem bibliotecas/frameworks que realmente dão conta do recado para eu não ter que descontinuar o projeto depois… Como o EXCEL é da Microsoft, sei que o suporte será mais limitado, mas não pode ser tanto a ponto de comprometer o projeto.

Seria viável uma solução desse tipo em JAVA?

2 Respostas

Luiz_Aguiar

http://poi.apache.org/

diego_qmota

Oi Luiz. Acho melhor explicar o que estou querendo para ter certeza que essa biblioteca supre as minhas necessidades:

Dos tipos de manipulação que precisaria fazer seriam:

-Retornar resultado de stored procedure (do SQL SERVER) em planilha. Não poderia haver conflitos com os tipos de dados (tipos de dados das colunas do Excel com os dados que estou inserindo);

-Manipulação total de gráficos do Excel, tais como essa que está em código VBA (que define o intervalo dos dados, faz split de gráfico duplo de pizza (distribuindo os valores entre a pizza maior e menor), retira/insere legenda enfim, permita uma manipulação poderosa sobre o arquivo excel de template;

-Codificação simples. Se eu for perder muito tempo para programar cada novo relatório e definir seus comportamentos, não compensa porquê os prazos de entrega de cada novo relatório seriam maiores e a solução não seria aceita

Código VBA - formatando gráfico da planilha

Dim MySheetGrafico As Worksheet
    Set MySheetGrafico = Wb.Sheets("Gráfico")

    With MySheetGrafico
        .ChartObjects("Gráfico 4").Chart.SetSourceData Source:=MySheetDados.Range("A1:B" & NumLinhas + 1)
        .ChartObjects("Gráfico 4").Chart.ChartGroups(1).SplitValue = NumLinhas - 1
        .ChartObjects("Gráfico 4").Chart.Legend.Delete
        .ChartObjects("Gráfico 4").Chart.HasLegend = True
    End With

O APACHE POI permite tudo isso? Eu cheguei um pouco de código dele, mas não achei muito simples…

Existe uma solução como essa em VBA aqui (com muito, muito código, desorganizado, pouco controle … bem zoado mesmo) e quero substituí-la, criando um programa JAVA, se possível. Preciso de monitoramento sobre a emissão de relatórios, medição de tempo de extração de dados e um controle flexível dos processos de requisição de relatórios…

Criado 5 de outubro de 2010
Ultima resposta 6 de out. de 2010
Respostas 2
Participantes 2