Início > programação, programação JSF > Tutorial: Técnicas de Geração de Relatórios com JasperReports / iReport

Tutorial: Técnicas de Geração de Relatórios com JasperReports / iReport

Uma abordagem utilizando a ferramenta de design iReport

Por diversas vezes tenho me deparado com pessoas no CEJUG e em diversos fóruns Java com dificuldades na geração de relatórios com o JasperReports ou na utilização do iReport como ferramenta visual de diagramação dos documentos.

Foi então que tive a idéia de disponibilizar esse tutorial no meu blog que mostra como criar relatórios no iReport através de três técnicas: passando uma conexão com o banco de dados, passando um ResultSet (encapsulado na classe JRResultSetDataSource) e passando uma lista de objetos (encapsulada na classe JRBeanCollectionDataSource).

Além da demostração de como gerar os relatórios, mostro também o código Java correspondente de cada método, dou algumas dicas para modificar os textFields dos relatórios e outras de utilização do próprio iReport.

Resolvi também disponibilizar a aplicação que criei em JSF no formato zip e war. Bom proveito a todos.

Clique aqui para baixar o PDF do tutorial.

Clique aqui para baixar o projeto do Eclipse compactado (zip).
Clique aqui para baixar o projeto no formato war.

  1. 14/02/2009 às 15:09 | #1

    Agora da para ter uma boa noção de como iniciar os estudos com IReport, tenho certeza que será de grande valia para muitas pessoas que necessitam criar relatórios.

    Fiquei feliz que em seu primeiro post, você veio com todas as forças e poderes, para demonstrar um conteúdo tão necessário.

    Esta de Parabens.

    • 14/02/2009 às 17:37 | #2

      Ythalo, obrigado pelo seu comentário. O desafio agora é continuar atualizando o conteúdo.

  2. 16/02/2009 às 14:33 | #3

    Parabéns pela iniciativa Pablo! Gostei do tutorial!

    • 16/02/2009 às 14:54 | #4

      Oi Loiane. Dei uma olhada no seu site também. Muito legal. Parabéns pela formatura.

  3. Eduardo
    16/02/2009 às 21:39 | #5

    Excepcional!!!!!!!!

    Muito obrigado!

  4. Adilson
    20/02/2009 às 19:17 | #6

    Que bom ter pessoas que compartilham seus conhecimentos

  5. Anderson
    24/04/2009 às 10:45 | #7

    Olá Pablo, realmente dos materiais que conheço este é o mais atual e também o mais completo. Estou tentando aplicar a meu projeto mas tenho um erro. Vou postar aki para você me dar uma dica.

    Segue:

    private String getContextPath() {
    HttpSession session = (HttpSession)
    FacesContext.getCurrentInstance().getExternalContext().getSession(false);
    return session.getServletContext().getContextPath();
    }

    A linha return session.getServletContext().getContextPath(); acusa erro no método getContextPath(). E o eclipse pede para eu fazer a seguinte modificação:

    return ((RelatorioUsuario) session.getServletContext()).getContextPath();

    Só que quando eu rodo o projeto uma exceção é lançada em tempo de execução:

    java.lang.ClassCastException: org.mortbay.jetty.servlet.Context$SContext cannot
    be cast to br.com.projetobase.report.RelatorioUsuario
    at br.com.projetobase.report.RelatorioUsuario.getContextPath(RelatorioUs
    uario.java:104)
    at br.com.projetobase.report.RelatorioUsuario.preenchePdf(RelatorioUsuar
    io.java:79)
    at br.com.projetobase.report.RelatorioUsuario.geraRelatorio(RelatorioUsu
    ario.java:38)
    at br.com.projetobase.bean.UsuarioBean.relatorioGeral(UsuarioBean.java:3
    22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    Eu entendo que não da para converter uma String retornada em um UsuarioBean, como posso resolver isto?

    • 24/04/2009 às 14:45 | #8

      Olá Anderson. O método getContextPath serve para retornar o nome da aplicação no container e ajuda a encontrar o local do relatório na aplicação.

      O erro do seu projeto é que deve estar sendo realizado um import incorreto.Isso pode ser verificado pelo trace da exception, onde diz que org.mortbay.jetty.servlet.Context não pode ser convertido em RelatorioUsuario. Na verdade, esse método getServletContext é para retornar um ServletContext, do pacote javax.servlet.

      O que você deve fazer é tirar esse cast e verificar se a classe HttpSession utilizada no método é do pacote javax.servlet.http.

      Qualquer coisa, pode escrever no meu e-mail que fica melhor: pablonobrega2004@gmail.com

      Abraço.

  6. Anderson
    24/04/2009 às 15:52 | #9

    Pablo funcionou sim, mas não foi o pacote errado e sim a lib do pacote javax.servlet q estava errado. É pra ser a versão 2.5 e estava a 2.4.

    Grato!

  1. No trackbacks yet.