Escolar Documentos
Profissional Documentos
Cultura Documentos
Document Views
O problema
Queremos gerar documentos bem formatados! Queremos imprimir documentos e ter
controle sobre o que será impresso em cada página!
Não é possível, por exemplo, imprimir páginas web e ter controle do que será
impresso no rodapé de cada página!
JasperReports
O JasperReports é um poderoso framwork open-source escrito em Java para geração
de relatórios. Ele permite gerar dinamicamente relatórios em diversos formatos; entre
eles: PDF, HTML, XLS, CSV e XML.
Funcionamento
O design do relatório (localização dos campos a serem preenchidos e seus repectivos
nomes, para futuro mapeamento) é definido em um arquivo XML, que obedece a
estrutura declarada no arquivo jasperreports.dtd.
Dados
Para produzir um relatório precisamos fornecer dados ao Jasper.
Esses dados podem ser consultas SQL inserida ao código XML ou ser realizada
por uma classe Java, gerando um objeto ResulSet, que será passado às classes
do Jasper para o preenchimento do relatório.
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 1/11
26/01/2018 Relatórios em Java
Parâmetros são dados passados para a operação de preenchimento, que não podem
ser encontrados normalmente na fonte de dados. São declarados, por exemplo, da
seguinte forma:
Podemos definir o nível no qual uma variável irá ser inicializada. Pode ser no
início do relatório (uma única vez), a cada página, coluna ou grupo.
Todas elas são expressões Java que podem conter em sua sintaxe:
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 2/11
26/01/2018 Relatórios em Java
<textFieldExpression>
“Sr.(a) ” + $F{Cliente} + " realizou um total de compras no valor de " +
$V{ValorTotalCompraSum} + " no dia " + (new SimpleDateFormat("dd/MM/yyyy")).format($
</textFieldExpression>
Layout
O JasperReports divide o layout do relatório em áreas “pré-definidas”, chamadas
seções.
API
Classe dori.jasper.engine.design.JasperDesign
Classe dori.jasper.engine.JasperReport
Classe dori.jasper.engine.JasperCompileManager
Classe dori.jasper.engine.JasperPrint
Interface dori.jasper.engine.JRDataSource
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 3/11
26/01/2018 Relatórios em Java
Classe dori.jasper.engine.JasperFillManager
Classe dori.jasper.engine.JasperPrintManager
Classe dori.jasper.engine.JasperExportManager
Permite gerar documentos nos formatos PDF, HTML e XML (versão 1.0). Com o
tempo, novos formatos serão incorporados.
Exemplo completo
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
public JasperReportExemple() {
}
//compila o relatório
JasperReport relatorio = JasperCompileManager.compileReport( desenho );
//estabelece conexão
Class.forName( driver );
Connection con = DriverManager.getConnection( url , login , pwd );
Statement stm = con.createStatement();
String query = "select * from turma";
ResultSet rs = stm.executeQuery( query );
//executa o relatório
Map parametros = new HashMap();
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 4/11
26/01/2018 Relatórios em Java
parametros.put("nota", new Double(10));
JasperPrint impressao = JasperFillManager.fillReport( relatorio , parametros,
//exibe o resultado
JasperViewer viewer = new JasperViewer( impressao , true );
viewer.show();
}
Tabela turma
Saída
Código XML
Arquivo report.jrxml (clique aqui!) utilizado no exemplo anterior.
Problemas
Dificuldade na escrita do documento XML.
IReport
O iReport é uma ferramenta que permite definir o design do relatório dentro de um ambiente
gráfico, contento “todos” os recursos que a biblioteca Jasper oferece.
É possível definir relatórios com designs modernos e complexos sem se quer escrever
uma linha de código XML, que é todo gerado automaticamente.
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 5/11
26/01/2018 Relatórios em Java
1) Selecione o menu Fonte de dados >> Conexões /Fonte de dados. A janela que
aparece lista todas as fontes de dados e conexões JDBC que você define. Clique no botão
New para criar uma nova conexão.
2) Na janela que aparece escolha o tipo de conexão (no nosso caso Database JDBC
Connection). Na mesma janela dê um nome à conexão. Por exemplo, “DacaDataSource”.
3) No campo “JDBC Driver”, selecione o driver do seu banco. Caso não esteja listado, como
no nosso caso, especifique um de acordo com o seu SGBD.
A sintaxe da URL difere de SGBD para SGBD, consulte a documentação de seu banco
para saber a sintaxe exata. Repare também no caminho para a base de dados.
5) Em “Server Address” digite o caminho para servidor de banco de dados, no nosso caso
“localhost”. Temos a possibilidade de salvar a senha marcando a opção “Save
password”.
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 6/11
26/01/2018 Relatórios em Java
Criando um relatório
1) Menu Arquivo >> Novo documento
3) Para inserir um texto estático, basta pressionar o botão e clicar no local onde se
deseja inserir o texto. Aparecerá a seguinte tela:
Quando a consulta for realizada, todas as colunas passam a ser campos que
podem ser utilizandos no relatório a ser editado.
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 7/11
26/01/2018 Relatórios em Java
5) Para visualizar os Campos que podem ser utilizados durante a edição do relatórios, ver
menu "Visualizar >> Campos do Relatório ...".
Nessa mesma tela é possível visualizar as variáveis e parâmetros que podem ser
visualizados.
Digite na tela que vai aparecer o nome do parâmetro e seu valor (observe que o valor
do parâmetro é escrito em Java).
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 8/11
26/01/2018 Relatórios em Java
6) Para inserir o campo mapeado no relatório, basta pressionar o botão e clicar no local
onde se deseja inserir o texto no relatório. Aparecerá a seguinte tela:
Observe que $F{nome}, implica que o campo será preenchido quando o relatório for
gerado com os dados recuperados na coluna nome da tabela turma do banco de
dados.
Note que serão impressos os nomes selecionados pela consulta cadastrada no iReport
(select * from turma).
7) Podemos também criar expressões para efetuar cálculos ou formatações sobre os dados
provenientes das colunas mapeadas, assim como, optar a que nível executar esta expressão.
Veja um exemplo:
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 9/11
26/01/2018 Relatórios em Java
Exemplo de código
public class IReportExemple {
private static final String url = "jdbc:mysql://127.0.0.1/teste";
private static final String driver = "com.mysql.jdbc.Driver";
private static final String login = "";
private static final String pwd = "";
public IReportExemple() {
}
Class.forName( driver );
Connection con = DriverManager.getConnection( url , login , pwd );
Statement stm = con.createStatement();
String query = "select * from turma";
ResultSet rs = stm.executeQuery( query );
//executa o relatório
Map parametros = new HashMap();
parametros.put("nota", new Double(10));
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 10/11
26/01/2018 Relatórios em Java
}
}
. . .
try {
// Aqui ele cria o relatório
JasperPrint impressao = JasperFillManager.fillReport(pathJasper
+ "jasperfile.jasper", parametros, con);
Links importantes
· http://ireport.sourceforge.net/
· http://jasperreports.sourceforge.net/
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm 11/11