Você está na página 1de 80

Jasper iReport

Ferramenta para desenvolvimento e


gerao de relatrios utilizando Java

TJAVIREP
Setembro/2005

Apostila desenvolvida especialmente para a Target Informtica Ltda.


Sua cpia ou reproduo expressamente proibida.
T@rgetTrust Treinamento e Tecnologia

T@rgetTrust Treinamento e Tecnologia

II

Sumrio
1. O que o iReport........................................................................1
Objetivos.......................................................................................................................................2
O que o iReport..........................................................................................................................3
O que o JasperReports................................................................................................................4
Exerccios......................................................................................................................................5
2. Instalando o iReport....................................................................1
Objetivos.......................................................................................................................................2
Aonde obter o iReport...................................................................................................................3
Requisitos mnimos do iReport.....................................................................................................4
Instalando o iReport......................................................................................................................5
3. Acesso ao banco de Dados...........................................................1
Objetivos.......................................................................................................................................2
Configurando DataSource.............................................................................................................3
Definindo a Conexo Ativa..........................................................................................................5
4. iReport Wizard............................................................................1
Objetivos.......................................................................................................................................2
Criando um relatrio no iReport...................................................................................................3
Exerccios......................................................................................................................................8
5. Modelo Relatrio iReport.............................................................1
Objetivos.......................................................................................................................................2
Estrutura de um relatrio..............................................................................................................3
Variveis, Parmetros e campos...................................................................................................7
Arquivos gerados pelo iReport...................................................................................................10
Exerccios....................................................................................................................................11
6. Customizando Relatrios.............................................................1
Objetivos.......................................................................................................................................2
Criando um relatrio.....................................................................................................................3
Inserindo Grficos no relatrio.............................................................................................9
Exerccios....................................................................................................................................13
7. Criando Subrelatrios................................................................15
Objetivos.....................................................................................................................................16
O que um subrelatrio..............................................................................................................17
Criando um subrelatrio.............................................................................................................18
Exerccios....................................................................................................................................25
8. Visualizando e Salvando Relatrios.............................................26
Objetivos.....................................................................................................................................27
Gerando o seu relatrio em formato PDF...................................................................................28
Gerando o seu relatrio em formato HTML...............................................................................30
Exerccios....................................................................................................................................32
T@rgetTrust Treinamento e Tecnologia

III

T@rgetTrust Treinamento e Tecnologia

IV

1. O que o iReport

O que o iReport

Objetivos

Saber o que o iReport

Saber o que o JasperReports

Entender para que serve o iReport

Diferenciar o iReport do JasperReports

O que o iReport

O que o iReport
O iReport uma ferramenta poderosa, intuitva e fcil de usar que
constroi relatrios para JasperReports. O iReport desenvolvido 100% em
Java.
Essa ferramenta permite ao usurio gerar relatrios complexos com
imagens, grficos e subrelatrios. O iReport integrado com o JfreeChart, uma
das bibliotecas Java de gerao de grficos mais difundidas.
Com o iReport possvel gerar relatrios em vrios formatos incluindo
PDF, HTML, XML, XLS, CVS,entre outros.

O que o iReport

O que o JasperReports
JasperReport a biblioteca de classes que torna possvel gerar os
relatrios. O iReport apenas uma interface grfica que faz uso do
JasperReports.
So as classes e mtodos disponibilizados pelo JasperReports que sero
usados para efitivamente gerar e exportar os relatrios.

O que o iReport

Exerccios
1. O que faz o iReport?
2. Para que serve o JasperReports?

O que o iReport

Espao para anotaes

O que o iReport

2. Instalando o iReport

Instalando o iReport

Objetivos

Saber como obter o iReport

Saber instalar o iReport

Saber os requisitos mnimos para se instalar o iReport

Instalando o iReport

Aonde obter o iReport


O iReport est disponvel para download no site da SourceForge.net. O
iReport e o JasperReports so projetos dessa comunidade de desenvolvedores
de software livre.
O endereo para download http://ireport.sf.net

Instalando o iReport

Requisitos mnimos do iReport


Para que o iReport funcione corretamente no seu sistema necessrio
que voc tenha a verso mais atualizada do JDK instalada no seu sistema.
Caso voc ainda no tenha o Java Development Kit (JDK) instalado no seu
computador, voc pode fazer o download no site da Sun: http://java.sun.com

Instalando o iReport

Instalando o iReport
A instalao do iReport bastante simples. preciso apenas
descompactar o arquivo .zip que voc baixou do site da SourceForge.net.
Ao descompactar esse arquivo ele j vai criar toda a estrutura de
diretrios necessrios para que o iReport funcione.
Uma vez descompactado, basta executar o arquivo iReport.bat (para
Windows), ou iReport.sh (para Linux), que o iReport ir ser exeutado.

Instalando o iReport

Espao para anotaes

3. Acesso ao banco de Dados

Acesso ao banco de Dados

Objetivos

Como configurar o DataSource que vai ser utilizado pelo iReport

Conhecer os diferentes drivers para conexo com o Banco de


Dados.

Testar a conexo com o Banco de Dados.

Acesso ao banco de Dados

Configurando DataSource
Logo que o iReport iniciar ser necessrio configurar o DataSource para
que seja possvel acessar o banco de dados, sobre qual vamos trabalhar para
gerar nossos relatrios. A definio do DataSource no obrigatria. Mas se
voc no tiver um banco de dados disponvel no ser possvel testar o
relatrios que voc estar criando.
Para definir a DataSource, clique no menu DataSource e selecione a
opo Connections/DataSource. A janela mostrada na figura 3.1 vai
aparecer. Clique no boto New para criar uma nova conexo.

Figura 3.1 Conexes / Fontes de Dados

Ao clicar no boto New a janela da figura 3.2 vai se abrir.


Vamos utilizar uma conexo com o banco de dados Oracle. Ento
devemos preencher essa janela com os seguintes valores:

Connection Type/ Datasource: Database JDBC connection


Name: Conexo Oracle
JDBC Driver: oracle.jdbc.driver.OracleDriver
Server Address: oracledb.targettrust.com.br
Database: ireportdb
Username: java
Password: java

Acesso ao banco de Dados

Figura 3.2 Connections properties

Ao preencher todos os campos acima clique no boto Wizard. Ele ir


gerar a JDBC URL para voc.
A
URL
gerada
jdbc:oracle:thin:@oracle.targettrust.com.br:1521:ireportdb.

ser

Caso a porta do seu banco de dados oracle no seja a 1521, voc pode
alterar manualmente. O boto wizard s uma facilidade, se voc j souber a
sua JDBC URL, no precisa fazer o Wizard, basta digitar a URL no campo JDBC
URL.
Uma vez definida a sua JDBC URL clique no boto Test para verificar se a
conexo est funcionando. Caso o teste for bem sucedido uma mensagem
pop-up vai avisar que o teste da conexo foi bem sucedido. Do contrrio.
Aparecer um mensagem de erro.
Clique no boto Save e sua conexo estar salva e pronta para uso.

Acesso ao banco de Dados

Definindo a Conexo Ativa


Para indicar ao iReport para usar a conexo que acabamos de criar como
a conexo padro, devemos definir a conexo que deve ficar ativa enquanto
estamo gerando os nosso relatrios. Para isso basta clicar no menu Build e
selecionar Set Active Connection. A janela da figura 3.3 ir aparecer.
Selecione Oracle Connection e clique no boto OK.

Figura 3.3 Set Active Connection

Isso far com que o iReport utilize a conexo com o Oracle para criar e
visualizar os relatrios.

Acesso ao banco de Dados

Espao para anotaes

4. iReport Wizard

iReport Wizard

Objetivos

Aprender a utilizar o iReport Wizard

Criar um relatrio utilizando o iReport

Visualizar o relatrio criado

iReport Wizard

Criando um relatrio no iReport


Vamos criar o nosso primeiro relatrio utilizando o Wizard do iReport.
No menu File selecione o item Report Wizard. A janela de dilogo ir
guiar o processo para gerao de um relatrio. Na passo 1, conforme mostra a
figura 4.1, devemos colocar qual o SQL que vamos usar para gerar esse
relatrio. No nosso exemplo, vamos listar todo o contedo da tabela vendas.

Figura 4.1 Passo 1 do iReport Wizard.

No passo 2, vamos selecionar as colunas que desejamos mostrar no relatrio.


Vamos selecionar todos os campos, conforme mostra a figura 4.2.

iReport Wizard

Figura 4.2 Passo 2 do iReport Wizard.

No passo 3, podemos escolher se queremos agrupar o resultado por


alguma coluna. Nesse primeiro exemplo vamos deixar em branco e seguir para
o passo 4, conforme mostra a figura 4.3.

Figura 4.3 Passo 3 do iReport Wizard

iReport Wizard

No passo 4, vamos selecionar o layout do relatrio. O iReport j tem


alguns layouts default para serem selecionados. Os layouts podem ser tabular
ou dispostos em colunas. Vamos escolher tabular e o layout classicT.xml,
conforme mostra a figura 4.4.

Figura 4.4 Passo 4 do iReport Wizrd


No passo 5 basta clicar finish para finalizar a criao do seu relatrio,
conforme mostra a figura.

iReport Wizard

Figura 4.5 Passo 5 do iReport Wizard

Agora para visualizar o seu relatrio recm gerado, selecione no menu


Build, a opo JRViewer preview.

Figura 4.6 Menu Build

iReport Wizard

Aps selecionar o item mostrado na figura 4.6, clique no menu Build e


selecione a opo Execute report (using active conn.). Vai aparecer uma
janela pedindo para salvar o relatrio. Salve o relatrio e a visualizao deve
aparecer, como mostra a figura 4.7.

Figura 4.7 Preview do relatrio gerado pelo Wizard.

Pronto voc acaba de construir o primeiro relatrio utilizando o iReport.

iReport Wizard

Exerccios

1. Utilizando o Wizard do iReport, crie um relatrio que liste todos os


produtos e quantidades desses produtos e a quantidade de cada um
deles agrupados por estado.
2. Utilizando o Wizard do iReport, crie um relatrio que apresente o total
das quantidades de produtos em cada estado. Utilize o SQL abaixo para
efetuar a pesquisa:

SELECT UF, SUM(QTDE) AS TOTAL FROM VENDAS GROUP BY UF

3. Com o Wizard do iReport crie um relatrio columnar que mostre o


nome e o preo dos produtos da tabela produto.
a.
b.
c.
d.
e.
f.

Clique em File | Report Wizard


Entre o comnado SQL select * from produto
Clique Next
Selecione as colunas preco e nome e clique Next.
Clique Next novamente
Selecione Columnar da combobox de layout e clique no template
classicC.xml. Clique Next.
g. Clique em Finish
h. Salve o relatrio com o nome a sua escolha.
i. Para visualizar o relatrio clique em Build | Execute report (usinf
active conn.)

iReport Wizard

Espao para anotaes

5. Modelo Relatrio iReport

Modelo Relatrio iReport

Objetivos

Entender a estrutura de um relatrio iReport

Saber identificar cada seo de um relatrio gerado pelo iReport

Selecionar as sesses que voc quer apresentar no seu relatrio

Modelo Relatrio iReport

Estrutura de um relatrio
Os relatrio do JasperReports gerados pelo iReport tem a seguinte
estrutura conforme mostra a tabela 5.1.

1. Ttulo
2. Cabealho de Pgina
3. Cabealho de Coluna
4. Cabealho de Grupo 1
5. Cabealho de Grupo 2
6. Detalhe
(repete para cada novo registro no banco de
dados)
7. Rodap do Grupo 2
8. Rodap do Grupo 3
9. Rodap da Coluna
10. Rodap da Pgina
11. Sumrio
Tabela 5.1 Estrutura de um relatrio JasperReports

As sesses 1. Ttulo e 11. Sumrio so exibidas apenas uma vez em todo


o relatrio. As sesses 2. Cabealho da Pgina e 10. Rodap da Pgina
repetem a cada nova pgina. As sesses 3. Cabealho Coluna e 9. Rodap
Coluna repetem a cada nova coluna dentro da pgina. As sesses 4, 5, 7 e 8
repetem de acordo com mudanas dos campos de 6. Detalhe. Pode haver
quantos grupos se deseje, inclusive zero.
Essas sesses so chamadas faixas (bands). Ento temos a faixo
deTtulo, a faixa de Cabealho de Pgina, a faixa de Detalhe, etc.
Dentro dessas faixas que so inseridos os elementos do relatrio , tais
como os rtulos, campos, imagens, grficos, etc.

Modelo Relatrio iReport

A figura 5.1 mostra as faixas de ttulo, cabealho de pgina, cabealho


de coluna, detalhe, rodap de pgina.

Figura 5.1 Faixas do Relatrio iReport

Na faixa de ttulo temos o campo de texto esttico Clasic Report


Template.
A faixa de cabealho da pgina est em branco apenas para dar espao
entre o ttulo e o cabealho da coluna.
Na faixa cabealho da coluna temos os campos de texto estticos UF,
Produto e QTDE.
Na faixa de detalhe temos campos de referncia aos valores retornados
pela consulta SQL $F{UF}, $F{Produto} e $F{QTDE}. No se preocupe com o
que isso quer dizer, vamos explicar em seguida. O importante identificar as
faixas.
Na faixa de rodap de pgina, esto as funes de data e paginao.
Como os elementos j esto dispostos na faixas, fica mais difcil
indentific-las. Se no houvesse nenhum elemento no relatrio as faixas
ficariam como demonstra figura 5.2.

Modelo Relatrio iReport

Figura 5.2 Faixas sem elementos

Note as demais faixas no aparecem porque eles esto


escondidas. Para visualizar todas as faixas de um relatrio, clique no
menu principal View e seleciona a opo Bands. A janela de dilogo
mostrada na figura 5.3 vai aparecer. Note que ela lista todas as faixas
desse relatrio. As faixas com altiura zero ficam escondidas. As faixas
com tamanho maior que zero aparecem no relatrio.Na figura 5.3, a
faixa de detalhe tem altura igual a 19.

Figura 5.3 Janela de Faixas do iReport

Modelo Relatrio iReport

Assim se voc quer mostrar alguma faixa que no est aparecendo ou


voc est precisando de mais espao, aumente a altura da faixa. Depois s
colocar os elementos que desejar.

Modelo Relatrio iReport

Variveis, Parmetros e campos


Como vocs viram na figura 5.1, apreceram vrias expresses como
$F{UF} $V{PAGE_NUMBER}. Mas o que so essas expresses?
$F{<noma da coluna>} uma referncias as colunas (ou campos)
retornados pela consulta SQL do relatrio. Assim se seu SQL tiver como retorno
uma coluna UF, $F{UF} referencia essa coluna. Veja a figura 5.1 para ver
como as colunas resultantes do SQL so mapeadas para os campos do nosso
relatrio.
$V{<noma varivel} referencia uma varivel que calculada dentro
do relatrio e especificado pelo programador. Algumas variveis como o
nmero da pgina, $V{PAGE_NUMBER}, o iReport j disponibiliza
automaticamente para voc.
$P{<nome do parmetro>} indica um parmetro passado para a
query SQL do relatrio. Os paramtros so uteis para cue possamos executar a
query de acordo com a seleo do usurio. Por exemplo, para trazer o
resultado das vendas de apenas um estado podemos criar um parmetro na
consulta SQL para trazer os resultados do estado indicado.
Para criar um parmetro clique no menu principal View e selecione a
opo Report Parameters. A janela da figura 5.4 vai aparecer.

Figura 5.4 Parmetros do Relatrio

Clique no Boto New. Uma nova janela vai aperecer conforme mostra
a figura 5.5. Preencha o campo Parameter Name com estado. O campo
Class Type com java.lang.String. Marque o campo Is For Prompting,

Modelo Relatrio iReport

assim quando voc executar o relatrio dentro do iReport ele vai perguntar
qual o valor vc quer passar para esse parmetro. O campo Default value
expression indica um valor padro a ser usado caso o valor para o parmetro
estado no seja passado ao relatrio. Preencha esse campo com SP . O
campo Parameter Description contm a descrio do que esse parmetro
representa. Clique em OK e depois feche a janela de parmetros.

Figura 5.5 Adicionando novo parmetro

Clique no menu principal View e selecione Report Query. Agora


altere o sql do relatrio como indica o cdigo 5.1.
select * from vendas where uf = $P{estado}
Cdigo 5.1 Query SQL parametrizada

Agora execute o seu relatrio clicando no menu principal Build e


selecionando a opo Execute Report (using active conn.).

A janela da figura 5.6 deve aparecer, perguntando qual o valor do


parmetro estado. Preencha com MG e o resultado do relatrio deve ser o
que mostra a figura 5.7.

Modelo Relatrio iReport

Figura 5.6 Entrada de Parmetro

Figura 5.7 Relatrio das vendas do estado MG

Modelo Relatrio iReport

Arquivos gerados pelo iReport


Agora que voc j viu os detalhes da interface grfica, preciso
entender o que o iReport faz para gerar esse relatrios.
Salve o seu relatrio corrente. Clique no menu principal em File e
selecione Save. Veja que ele vai salvar o nosso relatrio com a extenso
.jrxml (JasperReports XML). Esse arquivo um documento padro XML. Ele
contm as configuraes do nosso relatrio. Esse XML utilizado pelo
JasperReports para gerar um arquivo binrio com a extenso .Jasper que o
arquivo utilizado pelo JasperReports para efetivamente gerar o nosso relatrio.
O arquivo .jrxml muito complexo. Por isso edit-lo manualmente seria
no mnimo trabalhoso e nada produtivo, j que teriamos que descrever em
forma de XML tudo aquilo que pode ser feito de forma grfica atravs do
iReport.
Uma das vantagens de se ter o relatrio descrito num documento XML
que ele facilmente altervel. Por exemplo, se o nome da sua empresa
mudar, e voc tiver 100 relatrios aonde fazer a alterao. Basta mandar
substituir em seus arquivos .jrxml o nome velho da empresa pelo novo,
compilar os .jrxml novamente e voc j terminou a sua tarefa.

Modelo Relatrio iReport

Exerccios
1. Como dividio um relatorio? E para que serve cada sesso?
2. Como se referencia uma coluna resultante do SQL do relatrio no
iReport?
3. Como passar um parmetro para um relatrio?
4. O que um arquivo .jrxml?
5. O que um arquivo .jasper?
6. Crie um relatrio que recebe como parmetro um preo mnimo e um
preo mximo e mostre todos os produtos nessa faixa de preo.
a. Clique em File | Report Wizard
b. Entre o comando SQL select * from produto e clique Next
c. Selecione a coluna Nome e clique Next
d. Clique Next novamente
e. Selecione o
classicT.xml

layout

Tabular

da

combobox

f. Clique Next e depois Clique em Finish


g. Clique em View | Report Parameters
h. Clique no boto New
i. No campo parameter name digite mnimo.
j. Mude o parameter class type para double
k. Marque is for Prompting. Clique em OK.
l. Clique em New novamente
m. No campo parameter name digite maximo.
n. Mude o parameter class type para double
o. Marque is for Prompting. Clique em OK.
p. Feche a janela de Parameters
q. Clique em View | Report Query

template

Modelo Relatrio iReport

r. Adicione a query a clusula where preco > $P{minimo} and preco


< $P{maximo}. O seu comando SQL deve ficar assim: select *
from produto where preco > $P{minimo} and preco <
$P{maximo}
s. Salve o relatrio.
t. Para visualizar, clique em Build | Execute Report (using active
conn.)
u. O iReport vai perguntar o valor mnimo e mximo. Entre com os
valores (0 e 999999, por exemplo) e veja o resultado.
v. Execute novamente, mas agora mude os valores de mnimo e
mximo (0 e 500) e veja se o relatrio muda.

Modelo Relatrio iReport

Espao para anotaes

Modelo Relatrio iReport

6. Customizando Relatrios

Visualizando e Salvando Relatrios

Objetivos
Criar campos estticos no relatrio
Criar campos para apresentar o resultado do SQL
Criar grficos para seus relatrios

Visualizando e Salvando Relatrios

Criando um relatrio
At agora vimos como criar um relatrio a partir do iReport Wizard.
Agora vamos criar um relatrio desde o comeo. Para tanto, clique em File
no menu principal e selecione a opo New Document.
A janela da figura 6.1 ir aparecer. Nela possvel escolher o tamanho,
definir as margens, a orientao do relatrio e o nome. D o nome de
MeuRelatorio e clique no boto OK.

Figura 6.1 New Document

Um novo relatrio em branco vai ser criado como mostra a figura 6.2.
Nele podemos ver que algumas faixas j aparecem com tamanhos prdefinidos. Agora basta colocar os elementos que desejarmos nas faixas para
montar o nosso relatrio.

Visualizando e Salvando Relatrios

Figura 6.2 Relatrio em Branco

A figura 6.3 mostra alguns botes da barra de ferramenta que vamos


utilizar. Da esquerda para a direita, so eles: Imagem Texto Esttico, Campo
de texto, SubRelatrio, Grfico e Cdigo de Barra.

Figura 6.3 Botes da Barra de Ferramenta

Clique no boto de texto esttico, arraste o cursor sobre a faixa de Ttulo


para inserir o elemento de texto esttico. D um duplo clique sobre o elemento
recm inserido e a janela da figura 6.3 deve aparecer. Nela voc pode alterar
todas as propriedades desse elemento. Mude o texto para Meu Relatrio e
aumente o tamanho da fonte para 20.

Visualizando e Salvando Relatrios

Figura 6 .4 Propriedades do campo Esttico

Veja como ficou sobrando espao na banda de ttulo diminua o tamanho


da faixa de ttulo (como foi mostrado no captulo 5). Aproveite e diminua a
faixa de Cabealho de Pagina (page header) para altura 10, pois tb no vamos
utiliz-la.
Insira mais trs elementos de texto esttico na faixa de Cabealho de
Coluna (columnHeader). Mude o texto para ID, Descrio e Preo.
Para podermos inserir dados nesse relatrio vamos listar a tabela de
produto. Para tanto clique no menu View e selecione Report Query. Entre o
comando SQL select * from produto e clique no boto OK.
Agora clique no boto de campo de texto ( o boto com a letra F
estilizada). Insira trs campos na faixa de Detalhe (detial). Para poder
referenciar uma coluna da nossa consulta SQL, temos que dar duplo clique
sobre o elemento de campo de texto inserido. Uma janela como mostra a
figura 6.5 vai abrir, clique na aba text field. No campo Text Field Expression,
entre a referncia da coluna. Por exemplo, a coluna ID da consulta SQL acima
referenciada com a expresso $F{ID}. Faa o mesmo para os outros dois
campos. Referencia a coluna nome e preco. Cuide para colocar o tipo de
dado correto no cmapo Textfield Expression Class para evitar erros. Repare
que a expresso vai ficar verde quando voc entrar uma expresso vlida.

Visualizando e Salvando Relatrios

Figura 6.5 Propriedades Campo de Texto

Agora esconda as demais faixas (colocando sua altura para zero), menos
a faixa de Rodap de Pgina (pageFooter).
Na faixa de rodap de pgina, vamos colocar a data e o nmero da
pgina. Para tanto adicione dois novos campos de texto na faixa de rodap de
pgina. D duplo clique sobre o campo de texto da data. Clique na aba Text
Field, troque o Textfield Expresion Class para java.lang.Date e no campo
Textfield expression entre o comando new Date(). D duplo clique no o
outro campo de texto e clique na aba Text Field. Mude o Textfield
Expression Class para java.lang.Integer e no campo Textfield expression
coloque a referncia a varivel do nmero da pgina, $V{PAGE_NUMBER}.
Para visualizar as variveis pr-disponveis (builtin) em todos os
relatrios basta clicar no menu View e selecionar Report Variables.
O seu relatrio agora deve aparecer como o d figura 6.6. Clique no
menu Build e selcione Execute Report (using active conn.) e veja o
resultado.

Visualizando e Salvando Relatrios

Figura 6.6 Relatrio Meu Relatrio

Visualizando e Salvando Relatrios

Figura 6.7 Visualizao do Meu Relatrio

Visualizando e Salvando Relatrios

Inserindo Grficos no relatrio


Agora que j criamos um relatrio simples. Vamos colocar um grfico
para ilustrar o nosso relatrio.
Vamos gerar um grfico comparando os preos dos trs produtos da
nossa tabela.
Aumente a altura da faixa de sumrio (Summary) para colocar o nosso
grfico nela.
Clique no boto grfico e arraste o cursor sobre a faixa de sumrio
para criar um novo elemento grfico. Ao criar o elemento a janela da figura 6.7
vai abrir.

Figura 6.7 Propriedades do grfico

Escolha o modelo de grfico que voc quer utilizar. No nosso exemplo,


vamos utilizar o grfico torta 3D. Selecione esse grfico na janela da figura 6.7.
Clique na aba data, e depois clique no boto Report Serries. Uma
janela de dilogo vai abrir, clique no boto New Serie. Isso vai trazer uma
janela para voc criar uma srie com os valores que devem ser mostrados no
grfico como mostra a figura 6.8. Preencha o nome como PRODUTO.PRECO,
mude o tipo para java.lang.double e de qual campo da consulta SQL queremos
ver no grfico, $F{PRECO}. Clique no boto Close para fechar a janela.
Repita o processo para criar uma srie com as descries do produto para

Visualizando e Salvando Relatrios

usarmos de rtulo no grfico, ou sjea, crie uma sria PRODUTO.NOME, do tipo


java.lang.String, referenciando $F{NOME}.

Figura 6.8 Nova Srie

De volta a aba Data, selecione a srie PRODUTO.PRECO para o valor


do campo Serie 1. Selecione a srie PRODUTO.NOME para o campo Labels.
Clique na aba Chart Details para configurar os detalhes de exibio
do grfico. D o ttulo de Preo dos Produtos ao grfico e marque as opes
Show Legend como mostra figura 6.9. Clique no boto OK para finalizar.

Visualizando e Salvando Relatrios

Figura 6.9 Detalhes do Grfico.

Execute seu relatrio. A figura 6.10 mostra o resultado final.

Visualizando e Salvando Relatrios

Figura 6.10 Relatrio com Grfico

Como podemos ver no relatrio e no grfico o produto DVD-Writer o


mais caro, seguido pelo CPU 2.5Ghz e pelo Monitor 17.

Visualizando e Salvando Relatrios

Exerccios
1 Crie um relatrio em branco. Utilize a consulta select uf, sum(qtde) as
total from vendas group by produto, uf. Mostre os totais de quantidade de
produtos por estado no seu relatrio em branco. No esquea de dar um ttulo
ao seu relatrio.

2 Adicione um grfico (em formato pizza 3D) ao seu relatrio mostrando a


quantidade de produtos vendidos por estado.

3 Crie um relatrio que liste os nomes dos produtos e os seus preos.


Adicione um grfico (formato barras 3D) comparando os produtos por preo.

Visualizando e Salvando Relatrios

Visualizando e Salvando Relatrios

7. Criando Subrelatrios

Visualizando e Salvando Relatrios

Objetivos
Oque um subrelatrio
Para que serve
Como usar um subrelatrio para gerar relatrios tipo Mestre-Detalhe

Visualizando e Salvando Relatrios

O que um subrelatrio
Um subrelatrio um elemento que voc pode adicionar dentro de um
outro relatrio. Um subrelatrio nada mais que um relatrio inserido dentro
de outro. Assim voc pode modularizar seus relatros, criar relatrios
complexos ou construir relatrios do tipo mestre-detalhe.

Visualizando e Salvando Relatrios

Criando um subrelatrio
Para criar um subrelatrio primeiro a necessrio criar o relatrio que
esse subrelatrio ir referenciar. Para isso Clique em File e selecione New
Document. Uma janela vai abrir para voc dar o nome do relatrio. Chame o
relatrio de MeuSubrelatorio e clique OK.
Adicione um parmetro que vai ser usado na consulta SQL. Esse parmetro o
ID do produto. Clique em View e selecione Report Parameters. Adicione um
parmetro com o nome de prodid, do tipo java.lang.Integer e valor default
new Integer(1), como mostra a figura 7.1. Clique em OK e feche a janela
anterior.

Figura 7.1 Novo parmetro

Clique em View e selecione Report Query. Entre a consulta select nome


from produto where id = $P{prodid} e clique em OK.
Agora escoda todos as faixas menos a faixa de detalhe. Nela crie um campo de
texto. D duplo clique no campo para que abra a janela de propriedades do
campo de texto. Clique na aba Text Field, selecione o tipo java.lang.String
e entre a referncia a coluna nome, que queremos mostrar, no campo
Textfield expression. Feche a janela.

Visualizando e Salvando Relatrios

Figura 7.2 Campo de texto

Seu subrelatrio deve estar conforme o que mostra a figura 7.3.

Figura 7.3 Subrelatrio

Agora salve seu subrelatrio clicando em File e selecionando Save.


Crie um novo relatrio a partir do iReport Wizard. Use a consulta SQL
select uf,produto from vendas. No passo dois do wizard, selecione

Visualizando e Salvando Relatrios

apenas a coluna de UF para ser apresentada no relatrio. Aps terminar, seu


relatrio o wizard deve estar como mostra a figura 7.4.

Figura 7.4 Relatrio que lista os estados

D dois cliques no campo de texto da coluna UF ( $F{UF} ). Desmarque


a opo print repeated value como mostra a figura 7.5. Isso far com que os
valores que forem repetidos no sejam impressos, ou seja, os estados que j
foram listados no sero listados duas vezes.

Figura 7.5 Propriedades do Campo de texto UF

Visualizando e Salvando Relatrios

Agora aumente a altura da faixa de Detalhe (detail) para que possamos


inserir o nosso subrelatrio. Aps aumentar a faixa, insira o subrelatrio como
mostra a figura 7.6.

(Boto de Subrelatrio da barra de ferramenta)

Figura 7.6 Relatrio com subrelatrio

Agora que o elemento de subrelatrio est inserido, temos que


configur-lo para usar o subrelatrio que criamos anteriormente. Para isso, d
duplo clique no elemento de subrelatrio. A janela da figura 7.7 vai abrir, em
Subreport expression coloque o caminho do diretrio aonde o
MeuSubrelatrio.jasper foi gerado. Adicione um parmetro ao subreport
chamado prodid como mostrado na figura 7.8. Clique na aba Subreport e
escolha Use Connection expression da lista de opes como mostra a figura
7.9.

Visualizando e Salvando Relatrios

Figura 7.7 Aba Subreport(Other)

Figura 7.8 Parmetro do Subrelatrio

Visualizando e Salvando Relatrios

Figura 7.9 Aba Subreport do elemento SubRelatrio.

Agora que o relatrio e o subrelatrio esto vinculados, execute o


relatrio principal. Os produtos vendidos em cada estado agora aparecem
discriminados como mostra a figura 7.10.

Visualizando e Salvando Relatrios

Figura 7-10 Relatrio com Subrelatrios

Visualizando e Salvando Relatrios

Exerccios
1 Faa um relatrio mestre-detalhe utilizando um subreport.
a. Crie um relatrio para ser usado como subrelatrio
b. Acicione um parmetro a esse relatrio
c. Crie o relatrio principal
d. Adicione o elemento de Subrelatrio na faixa de Detalhes
e. Edite as propriedades do Subrelatrio e passe o parmetro que o
subrelatrio precisa receber. Configure as demais propriedades.
f. Execute o relatrio.

2 Construa outro relatrio mestre-detalhe utilizando um subreport. Apresente


o volar total dos produtos vendidos por estado. Adicione um grfico para
comparar os resultados. Siga os mesmos passos do exerccio 1.

Visualizando e Salvando Relatrios

8. Visualizando e Salvando
Relatrios

Visualizando e Salvando Relatrios

Objetivos
Visualizar o relatrio a partir de um programa Java ou de uma pgina
JSP.
Salvar o relatrio nos diferentes formatos como PDF, HTML, XML,
entre outros.

Visualizando e Salvando Relatrios

Gerando o seu relatrio em formato PDF


Voc pode gerar o seu relatrio e salvar o resultado em um arquivo PDF.
O JasperReports capaz de salvar o seu relatrio em um arquivo PDF sem
complicaes.
No cdigo 8.1 temos o exemplo de como salvar o nosso relatrio a partir
de uma aplicao Java padro. Para tanto basta carregar o arquivo .JASPER
gerado pelo iReport e os mtodos da biblioteca JasperReports fazem o resto do
servio.
import
import
import
import

net.sf.jasperreports.engine.*;
net.sf.jasperreports.view.*;
java.sql.*;
java.util.*;

public class Visualizador{


private static final String driver = oracle.jdbc.driver.OracleDriver;
private static final String url =
jdbc:oracle:thin:@localhost:1521:MYDATABASE;
private
private
private
private

static
static
static
static

final
final
final
final

String
String
String
String

login
Senha
pdf =
relat

= java;
= java;
relatorio.pdf;
= classic.jasper;

public static void main (String args[])throws Exception{


Class.forName(driver);
Connection conn =
DriverManager.getConnection(url,login,senha);
HashMap parametros = new HashMap();
//Executa o relatrio
JasperPrint impressao = JasperFillManager.fillReport(
relat,
parametros,
conn);
//Exibe o relatrio
JasperViewer viewer = new JasperViewer(impressao,true);
Viewer.show();

//Salva o relatorio no arquivo


JasperExportManager.exportReportToPdfFile(impressao,pdf);

}
Cdigo 8.1 - Aplicao Java Desktop

No cdigo 8.2 temos um exemplo de como mostrar um relatrio em


formato PDF numa pgina JSP. Assim voc pode mostrar seus relatrios na
Web.

Visualizando e Salvando Relatrios

<%@
<%@
<%@
<%@
<%@

page
page
page
page
page

errorPage="error.jsp" %>
import="datasource.*" %>
import="net.sf.jasperreports.engine.*" %>
import="java.util.*" %>
import="java.io.*" %>

<%
String url = jdbc:oracle:thin:@localhost:1521:MYDATABASE;
String login = java;
String Senha = java;
File reportFile = new File(application.getRealPath("classic.jasper"));
if (!reportFile.exists())
throw new JRRuntimeException("Arquivo classic.jasper no
encontrado.");
//Abre conexo com o banco de dados
Class.forName(driver);
Connection conn =
DriverManager.getConnection(url,login,senha);
Map parameters = new HashMap();
parameters.put("ReportTitle", "Address Report");
parameters.put("BaseDir", reportFile.getParentFile());
byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn
);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

%>
Cdigo 8.2 Relatrio em uma aplicao Web (report.jsp)

Visualizando e Salvando Relatrios

Gerando o seu relatrio em formato HTML


Se voc quiser exibir os seus relatrios diretamente na sua aplicao
Web em formato HTML, o cdigo 8.3 mostra como fazer isso.

<%@
<%@
<%@
<%@
<%@

page
page
page
page
page

import="net.sf.jasperreports.engine.*" %>
import="net.sf.jasperreports.engine.util.*" %>
import="net.sf.jasperreports.engine.export.*" %>
import="java.util.*" %>
import="java.io.*" %>

<%
String url = jdbc:oracle:thin:@localhost:1521:MYDATABASE;
String login = java;
String Senha = java;
File reportFile = new
File(application.getRealPath("/reports/WebappReport.jasper"));
if (!reportFile.exists())
throw new JRRuntimeException("Arquivo WebappReport.jasper no
encontrado.");
JasperReport jasperReport =
(JasperReport)JRLoader.loadObject(reportFile.getPath());
//Abre conexo com o banco de dados
Class.forName(driver);
Connection conn =
DriverManager.getConnection(url,login,senha);
Map parameters = new HashMap();
parameters.put("ReportTitle", "Relatorio Web");
parameters.put("BaseDir", reportFile.getParentFile());
JasperPrint jasperPrint =
JasperFillManager.fillReport(
jasperReport,
parameters,
conn
);
JRHtmlExporter exporter = new JRHtmlExporter();
Map imagesMap = new HashMap();
session.setAttribute("IMAGES_MAP", imagesMap);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image.jsp?
image=");
exporter.exportReport();
%>
Cdigo 8.3 Relatrio aplicao web em formato HTML (report_html.jsp)

Visualizando e Salvando Relatrios

Como voc pode observar no cdigo 8.3, o relatrio gerado no iReport,


WebappReport.jasper, carregado (JRLoader.loadObject(...)) e logo aps
executado
(JasperFillManager.fillReport(...)).
Aps
o
relatrio
executado, ele expotardo para o formato HTML. Objeto exporter setado em
seus parmetros, indicando qual o relatrio a ser exportado (jasperPrint) e
para onde deve ser exportado (out a pgina JSP). O comando exportReport( )
realiza por fim a exportao.

Visualizando e Salvando Relatrios

Exerccios
1 Crie uma aplicao Java que visualize o relatrio gerado pelo iReport
(.jasper) e depois salve o mesmo em um arquivo em fomrato PDF. Abra o PDF
para conferir o seu relatrio.
a. Use o exemplo do cdigo 8.1

2 Crie uma aplicao Web. Construa uma pgina JSP que carregue o relatrio
gerado pelo iReport e mostra como formato PDF.
a. Use o exemplo do cdigo 8.2

3 Crie uma outra pgina JSP na sua aplicao Web que mostra o contedo do
seu relatrio diretamente na pgina JSP com formato HTML.
a. Use o exemplo do cdigo 8.3

4 - Experimente passar parmetros para a sua query atravs das pginas JSP.
No esquea de carregar um relatrio que aceita parmetros e lembre o nome
do parmetro a ser usado.

Visualizando e Salvando Relatrios

Espao para anotaes

T@rgetTrust Treinamento e Tecnologia

Você também pode gostar