Relatório Ireport + JasperReport JEE + JSF

olá Pessoal,

No post de hoje, vou apresentar como gerar relatorios de uma base de dados sendo uma aplicação JEE. Em outro post, mostrei como gerar relatorios usando Java Basico com Hibernate, aqui vamos manter a mesma estrutura técnica a diferença apenas que será com foco para JEE. Espero que gostem.
Lets go…

Requisitos

Starting…

Para gerar relatorios em ambiente JEE, há algumas mudancas a nivel de codigo que sofrem alterações, porem tudo de ireport com BD é mantido.

passo 1

  • criar o layout no ireport e fazer a conexao com o banco de dados e definir as colunas do relatorio, enfim definir a estrutura do relatorio

passo 2

  • criar a classe de conexao com banco de dados – Hibernate
  • Criar o bean

passo 3

  • cria um package exclusivo para o relatorio e uma classe, por questao de organizacao importar o jrxml para o projeto e para o package do relatorio por medida de seguranca

passo 4

  • para que o arquivo seja gerado na pagina WEB, eh preciso mudar algumas coisas no metodo responsavel por gerar o relatorio:

FacesContext context = FacesContext.getCurrentInstance();

HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

ServletOutputStream responseStream = response.getOutputStream();

InputStream caminho = getClass().getResourceAsStream(“../relatorio/reportblog.jrxml”);

response.setContentType(“application/pdf”);

  1. criar um context e objetos de resposta.

  2. Fazemos um stream do caminho onde esta o jrxml. Quando temos dois pontos antes da barra significa que temosum caminho diferente da classe que gera o relatorio

  3. depois um response que informa o tipo do conteudo para o browser saber qual aplicativo chamar caso ele tenha suporte response.setContentType(“application/pdf”);

Na linha a seguir informamos como sera o nome do arquivo a ser gerado

response.setHeader(“Content-Disposition”,”attachment; filename=\”relatorio.pdf\””);

Abaixo temos o padrao para invocao

JasperReport pathReport = JasperCompileManager.compileReport(caminho);

//relatorio gerado

JasperPrint preencher = JasperFillManager.fillReport(pathReport, null,new JRBeanCollectionDataSource(listaUS));

JasperExportManager.exportReportToPdfStream(preencher,responseStream);

responseStream.flush();

responseStream.close();

context.renderResponse();

context.responseComplete();

O resultado

O resultado eh que ao inves de ter um arquivo que é direcionado para um local, ele aparece no browser (firefox, Chrome, IE) do usuario. E o browser decide como vai apresentar esse arquivo. Por exemplo, no FireFox, ele aprende o arquivo no proprio Browser, no Internet Explorer ele abre uma Janela onde o usuario decide se vai abrir ou fazer o download.

JasperViewer

O JasperViewer eh forma de exibir o relatorio em applet, ao inves de usar o browser, pode ser ate mais amigavel que usar o proprio browser, mas deve ser analizado o tempo de carregado disso em producao, basta adiciona a linha abaixo

JasperViewer.viewReport(preencher, false);

E desabilitar as linhas referente ao browser, para que nao seja executada em paralelo

response.setContentType(“application/pdf”);

response.setHeader(“Content-Disposition”,”attachment; filename=\”relatorio.pdf\””);

Vou ficando por aqui, espero que tenham gostado do post.

Abracos, see ya! Have a nice week, guys!




Gerando arquivos txt, html, pdf, xls, rtf, doc, xml, xls e ppt com Java

olá Pessoal,
Meu amigo Juliano Martins tem um projeto legal e simples para gerar txt, pdf, xls etc.  usando o velho e querido Java. Para nao perder a graça Configra o post dele abaixo:

Executáveis e código fonte podem ser baixados daqui: http://code.google.com/p/jfilecreator/
Blog do autor aqui: http://jmmwrite.wordpress.com
Aproveitem e divulguem, pode ser útil aos “javeiros

É comum em nossos projetos precisarmos de uma massa de arquivos para testar algo. Porém, eventualmente precisamos de vários arquivos com conteúdo real, ou seja, com texto verdadeiro, e não simplesmente arquivos gerados baseados em palavras randômicas. Além disso, tambem surge a necessidade de exportarmos conteúdo para um tipo de arquivo.

Para resolver um problema pontual em meu atual projeto, mas já contribuindo com a comunidade, lancei o jFileCreator (aka: Acarajé… coisas do projeto), que é um programa open source, com código fonte bem didático e de fácil reaproveitamento.

O mesmo gera: txt, html, pdf, xls, rtf, doc, xml, xls e ppt.

Executáveis e código fonte podem ser baixados daqui: http://code.google.com/p/jfilecreator/

Blog do autor aqui: http://jmmwrite.wordpress.com

Aproveitem e divulguem, pode ser útil aos “javeiros”.