Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
</variable>
</variable>
</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
dori.jasper.engine.JRResultSetDa
taSource (acessa um banco de
dados)
dori.jasper.engine.data.JRTableM
odelDataSource (acessa tabelas já
carregadas em interfaces swing)
dori.jasper.engine.JREmptyDataSo
urce (não acessa nenhuma fonte de
dados, utilizada quando se deseja
criar um JasperPrint sem acessar
nenhuma fonte de dados).
Classe
dori.jasper.engine.JasperFillManager
Classe
dori.jasper.engine.JasperExportManager
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() {
JasperDesign desenho =
JRXmlLoader.load( layout );
//compila o relatório
JasperReport relatorio =
JasperCompileManager.compileReport( desenho );
//estabelece conexão
Class.forName( driver );
Connection con =
DriverManager.getConnection( url , login , pwd );
//executa o relatório
JasperPrint impressao =
JasperFillManager.fillReport( relatorio ,
parametros, jrRS );
//exibe o resultado
viewer.show();
new
JasperReportExemple().gerar( "report.jrxml" );
} catch (Exception e) {
e.printStackTrace();
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.
Criando um relatório
1) Menu Arquivo >> Novo documento
Veja um exemplo:
Exemplo de código
public class IReportExemple {
private static final String url =
"jdbc:mysql://127.0.0.1/teste";
public IReportExemple() {
Class.forName( driver );
Connection con =
DriverManager.getConnection( url , login , pwd );
//executa o relatório
JasperFillManager.fillReportToFile( jasperFile,
parametros, jrRS );
JasperExportManager.exportReportToPdfFile( "untitled
_report_1.jrprint" );
try {
new
IReportExemple().gerar( "untitled_report_1.jasper" )
;
} catch (Exception e) {
e.printStackTrace();
. . .
try {
// Aqui ele cria o relatório
JasperPrint impressao =
JasperFillManager.fillReport(pathJasper
+ "jasperfile.jasper",
parametros, con);
res.sendRedirect("RelatorioLivros.pdf");
} catch (Exception e) {
res.getWriter().println("Erro ao
gerar o relatório: " + e);
}
Links importantes
· http://ireport.sourceforge.net/
· http://jasperreports.sourceforge.net/