Relatórios
Marco Antonio
Software Architect
Agosto - 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 ISO8859-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ório
package 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.
GeradorDeRelatorio
package 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();
}
%>
Download

Relatórios - Marco Reis