Java Reporting com JasperReports e iReport Open Source

JasperReports é uma solução open source poderosa e flexível para geração de relatórios. O visual designer iReport permite tirar total vantagem do poder do JasperReports sem necessidade de conhecimento profundo do formato XML nativo JasperReports. 

                                                                                                           John Ferguson Smart


Usando o JasperReports do Java

Então, agora temos um gerador de relatórios JasperReports funcional. Como usá-lo dentro de aplicações Java?

O objeto JasperDesign, no pacote net.sf.jasperreports.engine, é a representação Java de relatórios XML projetados usando o iReport. Carrega-se o XML report e compila-se para um

objeto JasperReport que realiza a geração do relatório: 

         JasperDesign jasperDesign 
             = JasperManager.loadXmlDesign("MyReport.xml");
         JasperReport jasperReport 
             = JasperManager.compileReport(jasperDesign);
 

Em uma aplicação real, não deveríamos fazer isto toda vez que geramos um relatório, pois a geração consome tempo e o relatório pode ser facilmente armazenado em cache.

Uma vez que tivermos um relatório compilado, podemos alimentá-lo com dados e usá-lo para gerar relatórios.

Ao gerarmos o relatório, podemos fornecer parâmetros de tempo de execução via Map. Isto é útil para fornecer informações desconhecidas em tempo de projeto, tal como um título de relatório personalizado pelo usuário. Dentro do relatório JasperReport, declaramos o parâmetro na janela “View/Report Parameters" e a seguir usamos a variável de parâmetro da mesma maneira que faríamos com os outros campos e variáveis previamente vistos: 

               // Parametros de relatório em tempo de execução
         Map parameters = new HashMap();
         parameters.put("title", "A user-customized title");
 

É claro que precisaremos também fornecer uma conexão JDBC válida para o banco de dados alvo: 

         // Recuperar a conexão com o banco de dados
         Connection conn = DBConnectionFactory.getConnection();

Finalmente, usamos a classe JasperFillManager para combinar o modelo de relatório compilado com os dados entrantes e gerar um relatório pronto para impressão: 

         JasperPrint jasperPrint 
                 = JasperFillManager.fillReport(jasperReport,  
                                                parameters, 
                                                conn);

  

Agora usamos o JasperPrintManager para gerar o relatório em qualquer formato desejado. O JasperReport suporta muitos formatos: PDF, Excel, XML, HTML, CVS, etc. Mas por enquanto, apenas escreveremos o relatório em um arquivo PDF: 

         JasperExportManager.exportReportToPdfFile(jasperPrint,
                                                   "report.pdf");

 

Existem muitos outras possibilidades. Veja as API JasperReports para maiores detalhes.

Outras Ferramentas Geradoras de Relatórios

Há disponíveis várias outras ferramentas geradoras de relatórios, portanto, em que pé o JasperReports/iReport se encontra em relação a elas? A seguir, alguns dos atores principais no campo:

O Eclipse BIRT é uma nova e promissora ferramenta para projeto e geração de relatórios, com um plugin Eclipse agradável. Embora relativamente nova, tem algumas funcionalidades poderosas de projeto e geração de relatórios. Por outro lado, é menos madura do que o JasperReports e parece também menos bem integrada com o Java, pois depende de scripting JavaScript interno para otimização dos relatórios. A integração de conexões com datasources que não sejam JDBC puros, parece ser também complicada. Não obstante, vale a pena dar uma olhada.

O Business Objects/Crystal Reports é uma solução BI/reporting comercial poderosa, com um desenhista gráfico experto. Uma licença Crystal Reports Server XI Edition (20 usuários) custa aproximadamente $7,500. O Crystal Reports IX Developer Edition, uma versão mais leve e mais orientada para desenvolvimento de aplicações Web, está disponível por aproximadamente $595 por desenvolvedor. A integração com o Java, parece porém, ser também limitada, mesmo na sua mais recente versão.

Um Duo Dinâmico

O JasperReports é uma ferramenta para geração de relatórios poderosa e flexível, fácil de integrar em um ambiente Java. O iReport elimina muito do trabalho difícil de projetar relatórios com o JasperReports — sem comprometer o seu poder. Juntos, formam um par impressionante. Experimente!

Leia todos artigos da série