Relatórios Marco Antonio Software Architect Agosto - 2008.

Post on 17-Apr-2015

106 views 0 download

Transcript of Relatórios Marco Antonio Software Architect Agosto - 2008.

RelatóriosMarco AntonioSoftware ArchitectAgosto - 2008

Introdução• JasperReport

– Framework java para relatórios com grande habilidade na organização e apresentação de conteúdo, permitindo a geração dinâmica de relatórios em diversos formatos (pdf, html, xls, csv e xml).

• iReport– Interface gráfica para o Jasper.

Tela inicial

Criando um novo relatório• Menu Arquivo -> Novo...• Ou Ctrl + N

Propriedades do relatório• Configuração dos

dados do relatório

Codificação• Altere para ISO-

8859-1

Design do relatório• Observe as

barras de ferramenta disponíveis

Classpath • Nosso relatório deve ter

acesso à classe EmpresaAerea.

• Esse tipo de acesso é configurado através do classpath.

Diretório de classes• Procure o

diretório build/classes dentro de sua aplicação.

• É onde ficam as classes compiladas.

Campos do relatório• Acesse o menu -> Data -> Query do

Relatório.

Campos do relatório• Clique no

botão “Ler Atributos”.

Campos do relatório• Esses serão os

campos disponíveis para visualização no relatório

Estrutura do documento• Navegue pela estrutura do

documento e veja quais os dados disponíveis para o relatório.

Design do relatório

• Acrescente um texto estático com o título do relatório, bem como os nomes das colunas.

• Arraste os campos referentes a nomeFantasia e razaoSocial para o relatório.

Design do relatório

Propriedades do campo texto• Selecione as propriedade do título do

relatório com o botão direito e altere os dados da fonte.

Salve o arquivo• Crie o diretório

relatorios dentro de WEB-INF.

Opções • No menu Opções ->

Opções altere a opção conforme a figura.

Compilação do relatório• Veja na barra de ferramentas o ícone

de compilação.• A partir desse momento o diretório está

pronto para ser acessado pela aplicação.

Outros campos• Crie mais um campo texto para a data.• Com o botão direito escolha “Edit

Expression”.

Expressões • Com o editor de

expressões podemos escrever código java nativo, utilizando qualquer classe disponível.

Campos do relatório

Campos• Colunas do banco de dados disponíveis

para o relatório.

Variáveis pré-definidas• Principais contadores disponíveis.

Parâmetros• Existe a possibilidade de enviar dados

isolados da aplicação para o relatório através de parâmetros.

Novo parâmetro• Para exemplificar, vamos

criar o parâmetro NomeDoSistema.

Design final do relatório

Libs do projeto• Commons-javaflow• iReport• iText• Jasperreports• Jcommon• Jfreechart

Teste do relatóriopackage net.sca.entidades.teste;

import java.io.*;import java.util.*;

import net.sca.persistencia.*;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.data.*;

public class TesteRelatorioEmpresa { public static void main(String[] args) { try {(1) FileInputStream input = new FileInputStream( "C:/Sistemas/workspace_javaweb/SistemaDeControleAereo/WebContent/WEB-INF/relatorios/RelatorioDeEmpresas.jasper");(2) FileOutputStream saida = new FileOutputStream("c:/RelatorioDeEmpresas.pdf");(3) JRDataSource dados = new JRBeanCollectionDataSource(new DAOEmpresaAerea().consultarTodos());(4) Map mapaDeParametros = new HashMap(); mapaDeParametros.put("NomeDoSistema", "Sistema de Controle Aéreo");(5) JasperRunManager.runReportToPdfStream(input, saida, mapaDeParametros, dados); System.out.println("Relatório gravado com sucesso"); } catch (Exception e) { e.printStackTrace(); } }}

Detalhamento 1. Abre o arquivo do relatório.

2. Cria o arquivo de saída, no exemplo, um pdf.

3. Fonte de dados, fornecida pelo DAO através de uma coleção de objetos.

4. Mapa com parâmetros do relatório.

5. Monta o relatório com dados do DAO, e grava no arquivo de saída.

GeradorDeRelatoriopackage com.sistemabancario.entidades;

import java.io.*;import java.util.*;

import javax.faces.context.*;import javax.servlet.*;

import net.sca.persistencia.*;import net.sf.jasperreports.engine.*;import net.sf.jasperreports.engine.data.*;

public class GeradorDeRelatorio { public void executaRelatorio(String nomeDoRelatorio, OutputStream saida) { try {

GeradorDeRelatorio(1) ExternalContext e = FacesContext.getCurrentInstance().getExternalContext(); ServletContext s = (ServletContext) e.getContext(); String diretorioDosRelatorios = s.getRealPath("/WEB-INF/relatorios");(2) InputStream entrada = new FileInputStream(diretorioDosRelatorios + "/" +

nomeDoRelatorio);(3) Map mapaDeParametros = new HashMap(); mapaDeParametros.put("NomeDoSistema", "Sistema de Controle Aéreo");(4) JRDataSource dados = new JRBeanCollectionDataSource(new DAOEmpresaAerea() .consultarTodos());(5) JasperRunManager.runReportToPdfStream(entrada, saida, mapaDeParametros, dados); } catch (Exception e) { e.printStackTrace(); } }}

Detalhamento 1. Recupera dados do contexto da aplicação, no

caso, o diretório.2. Abre o arquivo do relatorio

(RelatorioDeEmpresas.jasper) que está no diretório WEB-INF.

3. Mapa com parâmetros a serem passados aos relatório.

4. Fonte de dados, coleção de objetos que serão exibidos no relatório.

5. Mostra o relatório no browser do cliente.

VisualizadorRelatorioDeEmpresas.jsp<%@page import="com.sistemabancario.entidades.GeradorDeRelatorio;"%><% try { out.clear(); GeradorDeRelatorio gerador = new GeradorDeRelatorio(); ServletOutputStream output = response.getOutputStream(); response.setContentType("application/pdf"); response.addHeader("Content-Disposition", "Inline;"); gerador.executaRelatorio("RelatorioDeEmpresas.jasper", output); output.flush(); output.close(); } catch (Exception e) { e.printStackTrace(); }%>