• Nenhum resultado encontrado

Introdução a JasperReport

N/A
N/A
Protected

Academic year: 2021

Share "Introdução a JasperReport"

Copied!
56
0
0

Texto

(1)

Introdução ao JasperReport

(2)

Instalação do Ambiente

(3)

O Ambiente

IDE inspirado no Eclipse

(4)

Conhecendo o Jaspersoft Studio

Interface baseada no eclipse

Um projeto poderá conter vários relatórios

(5)

Conhecendo o Jaspersoft Studio

Criando o primeiro relatório

Clique com o Jasper Report Clique com o botão direito do mouse e escolha: New > Jasper Report

(6)

Conhecendo o Jaspersoft Studio

1. Escolha a opção Blank e clique em “Next”

(7)

Conhecendo o Jaspersoft Studio

4. Escolha a conexão

com o banco de

dados

5. Escolha a Tabela

6. Selecione os

campos do relatório

( próximo passo)

Digite o Finish Digite o SQL e clique em Finish

(8)

Conhecendo o Jaspersoft Studio

O relatório criado tem as seguintes seções (bandas):

Como funciona as

(9)

Conhecendo o Jaspersoft Studio

Toda a parte visual é construída a partir do XML que representa o relatório:

Clique na aba Source para Ver o código fonte.

(10)

Conhecendo o Jaspersoft Studio

Uma nova banda

pode ser incluída clicando com o botão

direito e escolhendo a opção: “Add Band”

Para excluir uma banda, basta selecioná-la e apertar “Delete”. OBS: Com exceção da banda

Detail, podemos ter apenas uma banda de cada tipo!

(11)

Conhecendo o Jaspersoft Studio

Podemos inserir

elementos nas

bandas

Todo elemento tem

suas

(12)

Elemento Static Text

Texto ou informação estática no relatório

As principais propriedades são “Text “e “Font”

Exemplo:

Na banda de título foi inserido um Static Text com as seguintes

propriedades: Text

Font (size e bold) Aligment

(13)

Preview do relatório

Selecione a aba Preview

(14)

Elemento Text Field

Texto ou informação composta por expressões

As principais propriedades são “Expression“e “Blank when null”

Exemplo:

Na banda de Page header foi inserido um Text Field com a seguinte

propriedades: Expression =

(15)

Elemento Text Field

Exemplo:

Na banda de detail foi inserido Text Fields com a propriedade Expression apontando para os campos do banco de dados

(16)

Acesssando um BD

CREATE TABLE `pessoa` ( `codigo` int(10) unsigned NOT NULL auto_increment, `nome` varchar(255) NOT NULL,

`idade` int(10) unsigned NOT NULL, `mae` varchar(255) NOT NULL,

`pai` varchar(255) default NULL, `classe` char(1) NOT NULL,

`Renda` decimal(12,2) NOT NULL, `nascimento` date NOT NULL,

`ativo` tinyint(1) unsigned NOT NULL default '1',

(17)

Acesssando um BD

CREATE TABLE `endereco` (

`codigo` int(10) unsigned NOT NULL auto_increment, `codPessoa` int(10) unsigned NOT NULL,

`endereco` varchar(45) NOT NULL, `bairro` varchar(45) NOT NULL, `estado` varchar(2) NOT NULL,

`numero` int(10) unsigned NOT NULL,

PRIMARY KEY (`codigo`), KEY `FK_Endereco_Pessoa` (`codPessoa`), CONSTRAINT

`FK_Endereco_Pessoa` FOREIGN KEY (`codPessoa`) REFERENCES `pessoa` (`codigo`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

(18)

Acesssando um BD

CREATE TABLE `contacorrente` (

`codigo` int(10) unsigned NOT NULL auto_increment, `codPessoa` int(10) unsigned NOT NULL,

`data` date NOT NULL,

`valor` decimal(12,2) default NULL, PRIMARY KEY (`codigo`),

KEY `FK_ContaCorrente_Pessoa` (`codPessoa`), CONSTRAINT `FK_ContaCorrente_Pessoa` FOREIGN KEY (`codPessoa`) REFERENCES `pessoa` (`codigo`)) ENGINE=InnoDB

(19)

Primeiro relatório

1. Clique o botão direito do mouse e escolha a opção “New > Jasper

Report”;

2. Escolha a opção “Blank A4” nos templates;

3. Informe o nome do relatório: “RelatorioPessoas.jrxml”

4. Configure o Data source:

(20)

Primeiro relatório

5. Configure o data adapter

Caminho do “jar” do MySQL

Caminho do “jar” do MySQL

(21)

Primeiro relatório

6. Configure a tabela de acesso do data source (clique em next);

7. Selecione todos os campos (clique em next);

8. Neste relatório não iremos agrupar registros (clique em next);

9. Finalizar a configuração.

(22)

Primeiro relatório

10. Você pode configurar a página clicando com o botão direito do

mouse fora das bandas e escolhendo a configuração “Page

Format”.

(23)

Primeiro Relatório

Static Text

(24)

Primeiro Relatório

11. Insira os seguintes Static text e Text Fields nas bandas mostradas

abaixo:

(25)

Primeiro Relatório

12. Para os Text Fields com datas e valores monetários podemos

inserir máscaras ou padrões de texto:

(26)

Primeiro Relatório

Dica: pode-se manipular um tipo data de várias formas, por exemplo,

pegar somente o ano ou a hora através dos métodos disponibilizados:

(27)

Primeiro Relatório

13. Podemos traduzir os valores true e false modificando a

propriedade “expression” do campo ativo:

(28)

Primeiro Relatório

14. Podemos filtrar os registros da banda detalhe utilizando a

propriedade “Print when expression”:

(29)

Primeiro Relatório

15. Podemos criar parâmetro de entrada :

3) Configure a propriedade “Print When expression” da banda detail

(30)

Primeiro Relatório

16. Podemos inserir imagens com o componente Image. Por exemplo,

a figura abaixo foi inserida na banda de sumário

Informei o caminho absoluto: “c:\pessoas.jpg”

(31)

Primeiro Relatório

17. Iremos inserir imagens diferentes para indicar se a pessoa é maior

ou menor de idade.

18. Insira duas imagens na pasta do projeto (workspace)

19. Crie duas novas colunas na banda detail: “Idade” e “Imagem”

20. Configure a expression da imagem da seguinte forma:

Se for comparar string use a função EQUALS

(32)

Primeiro Relatório

21. Podemos inserir bordas em qualquer elemento dentro das bandas.

Por exemplo, para colocar bordar no campo “Ativo”:

2) Selecione o lado da borda que será configurado, ou use os botões abaixo; 3) Informe a espessura da borda. 1) Selecione o

text field a ser alterado;

(33)

Primeiro Relatório

22. Podemos inserir linhas no relatório inserido o componente “Line”

da palheta de elementos básicos

Inserido um componente “line” no final da banda Detail para separar cada linha

(34)

Primeiro Relatório

(35)

Primeiro Relatório - variáveis

Criando a variável TotalDePessoas

(36)

Primeiro Relatório - variáveis

Criando a variável SomaDeIdades

$F{ativo} == true ? $F{idade} : 0

(37)

Primeiro Relatório - variáveis

Arraste as variáveis para a banda sumário e veja o resultado no preview

OBS: como é criado um Text Field, podemos fazer todas as

(38)

Segundo Relatório – mestre/detalhe

1. Copie e cole o relatório existente renomeado-o para PessoaEndereco

2. Clique em uma parte em branco do relatório (fora das bandas)

3. Procure nas propriedades do relatório o botão “Edit query, filter and sort order”

4. Verifique se o data adapter (data source) manteve a configuração com o BD

(39)

Segundo Relatório – mestre/detalhe

1. Aumente a largura da banda de detalhe (Height = 52 px)

2. Na banda de detalhe insira um componente chamado “Subreport”

3. Configure esse novo componente seguindo os passos a seguir:

(40)
(41)

Segundo Relatório – mestre/detalhe

4. Adicione todos os campos

5. Na tela de agrupamento apenas clique em “next”

6. Execute os passos abaixo e clique em “finish”

(42)

Segundo Relatório – mestre/detalhe

(43)

Segundo Relatório – mestre/detalhe

7. Nas propriedades do relatório, clique no botão “Edit query, filter and sort options”

8. Modifique a query inserindo o parâmetro criado nos passos anteriores

(44)

Segundo Relatório – mestre/detalhe

9. Volte no relatório master (RelatorioPessoas.jrxml) e reposicione o Subreport para

ocupar toda a largura da banda detail:

(45)

Segundo Relatório – mestre/detalhe

10. Como o detalhe está selecionado, altere também o “Data Source Expression”,

conforme figura abaixo:

(46)

Segundo Relatório – mestre/detalhe

11. Volte no relatório detail (PessoasEnderecoDetalhe.jrxml) e deixe apenas as bandas

“Column Header” e “Detail”.

12. Insira os campos do detalhes e os configure como mostra a imagem abaixo:

13. Compile esse relatório para refletir essas alterações no Master.

Podemos remover as margens clicando com o botão direito do mouse e

(47)
(48)

Segundo Relatório – mestre/detalhe

Exercício:

Crie outro Subreport logo abaixo do primeiro. Esse novo SubReport deve mostrar as

contas-corrente das pessoas.

Dica: Para que os sub-relatório não se sobreponham, informe o valor “true” para a

propriedade “Remove Line When Blank” e para esse último sub-relatório informe o

valor “float” para a propriedade “Position Type”.

(49)

Chamando o relatório no Java

1. Crie um projeto Mavem e insira as seguintes dependências no pom.xml:

2. Copie o arquivo do relatório “RelatorioPessoas.jasper” para a mesma

pasta (pacote) da classe com o método main:

.... <dependencies> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.2.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> ...

-Copie o .jasper também para a pasta target dos projetos no Netbeans; -Veja se as imagens estão acessíveis.

(50)

Chamando o relatório no Java

3. Crie uma classe com o método main

import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedHashMap; import java.util.Map; import net.sf.jasperreports.engine.JRExporter; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.export.JRPdfExporter; //continua no próximo slide

(51)

Chamando o relatório no Java

public static void main(String[] args) throws Exception{ System.out.println("Conectando ao banco de dados..."); Class.forName("com.mysql.jdbc.Driver");

Connection mySQLConnection =

DriverManager.getConnection("jdbc:mysql://localhost:3306/jasper01","root", "root"); InputStream relatorio =

CarregaJasper.class.getResourceAsStream(“RelatorioPessoas.jasper"); Map<String,Object> parameters = new LinkedHashMap<String,Object>(); parameters.put("ParameterInativos", Boolean.TRUE);

System.out.println("Gerando relatório...");

JasperPrint jp = JasperFillManager.fillReport(relatorio, parameters,mySQLConnection); JRExporter exporter = new JRPdfExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT,jp);

exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "meuRelPessoas.pdf");

System.out.println("Gerando PDF..."); exporter.exportReport();

System.out.println("Feito!"); } Ao invés de exporter Podemos vizualizar:JasperViewer viewer = new JasperViewer(jp, false); viewer.show();

(52)

Compilando o relatório no Java

public static void main(String[] args) throws Exception{ //conexão com banco de dados omitido...

System.out.println(“Compilando o realtorio..."); InputStream relatorioSource =

CompilarJasper.class.getResourceAsStream("RelatorioPessoas.jrxml"); ByteArrayOutputStream relatorioOutputCompiled = new ByteArrayOutputStream();

JasperCompileManager.compileReportToStream(relatorioSource, relatorioOutputCompiled);

byte[] compiledReportData= relatorioOutputCompiled.toByteArray();

relatorioOutputCompiled.close();

Map<String,Object> parameters = new LinkedHashMap<String,Object>(); parameters.put("ParameterInativos", Boolean.TRUE);

System.out.println("Gerando realtorio...");

JasperPrint jp = JasperFillManager.fillReport(new

ByteArrayInputStream(compiledReportData), parameters,mySQLConnection);

//exportando e gerando PDF omitidos... }

Insira o arquivo .jrxml no projeto e no target do

(53)

Compilando o relatório no Java com

seus sub relatórios

public static void main(String[] args) throws Exception{ //conexão com banco de dados...

InputStream theReport = compileReport();

Map<String,Object> parameters = new LinkedHashMap<String,Object>(); System.out.println("Gerando realatório...");

JasperPrint jp = JasperFillManager.fillReport(theReport, parameters,mySQLConnection); //exportando e gerando PDF omitidos...

}

Esse método gera todos os detalhes antes de

(54)

Compilando o relatório no Java com

seus sub relatórios

public static InputStream compileReport() throws Exception{ System.out.println("Compilando Conta Corrente...");

InputStream isPCC =

PessoasEEnderecosReport.class.getResourceAsStream("PessoasContaCorrente.jrxml"); ByteArrayOutputStream relatorioCCOutputCompiled = new ByteArrayOutputStream(); JasperCompileManager.compileReportToStream(isPCC, relatorioCCOutputCompiled); byte[] compiledCCReportData = relatorioCCOutputCompiled.toByteArray();

FileOutputStream filePCC = new

FileOutputStream("PessoasEEnderecos_ContaCorrente.jasper"); filePCC.write(compiledCCReportData);

filePCC.close();

(55)

Compilando o relatório no Java com

seus sub relatórios

public static InputStream compileReport() throws Exception{ System.out.println("Compilando Endereco...");

InputStream isPD =

PessoasEnderecosReport.class.getResourceAsStream("PessoaEnderecoDetalhe.jrxml"); ByteArrayOutputStream relatorioPDOutputCompiled = new ByteArrayOutputStream();

JasperCompileManager.compileReportToStream(isPD, relatorioPDOutputCompiled); byte[] compiledPDReportData = relatorioPDOutputCompiled.toByteArray();

FileOutputStream filePD = new FileOutputStream("PessoasEEnderecos_Detalhe.jasper"); filePD.write(compiledPDReportData);

filePD.close();

(56)

Compilando o relatório no Java com

seus sub relatórios

public static InputStream compileReport() throws Exception{ System.out.println("Compilando Relatório principal...");

InputStream finalFile =

PessoasEEnderecosReport.class.getResourceAsStream("PessoasEEnderecos.jrxml"); ByteArrayOutputStream relatorioFinalOutputCompiled = new ByteArrayOutputStream(); JasperCompileManager.compileReportToStream(finalFile, relatorioFinalOutputCompiled); byte[] compiledFinalReportData = relatorioFinalOutputCompiled.toByteArray();

return new ByteArrayInputStream(compiledFinalReportData); }

Referências

Documentos relacionados