Você está na página 1de 80

Jasper iReport

Ferramenta para desenvolvimento e


geração de relatórios utilizando Java

TJAVIREP
Setembro/2005

Apostila desenvolvida especialmente para a Target Informática Ltda.


Sua cópia ou reprodução é expressamente proibida.

T@rgetTrust Treinamento e Tecnologia I


T@rgetTrust Treinamento e Tecnologia II
Sumário
1. O que é o iReport........................................................................1
Objetivos.......................................................................................................................................2
O que é o iReport..........................................................................................................................3
O que é o JasperReports................................................................................................................4
Exercícios......................................................................................................................................5

2. Instalando o iReport....................................................................1
Objetivos.......................................................................................................................................2
Aonde obter o iReport...................................................................................................................3
Requisitos mínimos do iReport.....................................................................................................4
Instalando o iReport......................................................................................................................5

3. Acesso ao banco de Dados...........................................................1


Objetivos.......................................................................................................................................2
Configurando DataSource.............................................................................................................3
Definindo a Conexão Ativa..........................................................................................................5

4. iReport Wizard............................................................................1
Objetivos.......................................................................................................................................2
Criando um relatório no iReport...................................................................................................3
Exercícios......................................................................................................................................8

5. Modelo Relatório iReport.............................................................1


Objetivos.......................................................................................................................................2
Estrutura de um relatório..............................................................................................................3
Variáveis, Parâmetros e campos...................................................................................................7
Arquivos gerados pelo iReport...................................................................................................10
Exercícios....................................................................................................................................11

6. Customizando Relatórios.............................................................1
Objetivos.......................................................................................................................................2
Criando um relatório.....................................................................................................................3
Inserindo Gráficos no relatório.............................................................................................9
Exercícios....................................................................................................................................13

7. Criando Subrelatórios................................................................15
Objetivos.....................................................................................................................................16
O que é um subrelatório..............................................................................................................17
Criando um subrelatório.............................................................................................................18
Exercícios....................................................................................................................................25

8. Visualizando e Salvando Relatórios.............................................26


Objetivos.....................................................................................................................................27
Gerando o seu relatório em formato PDF...................................................................................28
Gerando o seu relatório em formato HTML...............................................................................30
Exercícios....................................................................................................................................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, intuitíva e fácil de usar que


constroi relatórios para JasperReports. O iReport é desenvolvido 100% em
Java.

Essa ferramenta permite ao usuário gerar relatórios complexos com


imagens, gráficos e subrelatórios. O iReport é integrado com o JfreeChart, uma
das bibliotecas Java de geração de gráficos mais difundidas.

Com o iReport é possível gerar relatórios em vários formatos incluindo


PDF, HTML, XML, XLS, CVS,entre outros.
O que é o iReport

O que é o JasperReports
JasperReport é a biblioteca de classes que torna possível gerar os
relatórios. O iReport é apenas uma interface gráfica que faz uso do
JasperReports.

São as classes e métodos disponibilizados pelo JasperReports que serão


usados para efitivamente gerar e exportar os relatórios.
O que é o iReport

Exercícios

1. O que faz o iReport?

2. Para que serve o JasperReports?


O que é o iReport

Espaço para anotações


O que é o iReport
2. Instalando o iReport
Instalando o iReport

Objetivos
• Saber como obter o iReport
• Saber instalar o iReport
• Saber os requisitos mínimos para se instalar o iReport
Instalando o iReport

Aonde obter o iReport

O iReport está disponível para download no site da SourceForge.net. O


iReport e o JasperReports são projetos dessa comunidade de desenvolvedores
de software livre.

O endereço para download é http://ireport.sf.net


Instalando o iReport

Requisitos mínimos do iReport

Para que o iReport funcione corretamente no seu sistema é necessário


que você tenha a versão mais atualizada do JDK instalada no seu sistema.
Caso você ainda não 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 instalação 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


diretórios necessários 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

Espaço para anotações


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 conexão com o Banco de
Dados.
• Testar a conexão com o Banco de Dados.
Acesso ao banco de Dados

Configurando DataSource

Logo que o iReport iniciar será necessário configurar o DataSource para


que seja possível acessar o banco de dados, sobre qual vamos trabalhar para
gerar nossos relatórios. A definição do DataSource não é obrigatória. Mas se
você não tiver um banco de dados disponível não será possível testar o
relatórios que você estará criando.

Para definir a DataSource, clique no menu “DataSource” e selecione a


opção “Connections/DataSource”. A janela mostrada na figura 3.1 vai
aparecer. Clique no botão “New” para criar uma nova conexão.

Figura 3.1 – Conexões / Fontes de Dados

Ao clicar no botão New a janela da figura 3.2 vai se abrir.

Vamos utilizar uma conexão com o banco de dados Oracle. Então


devemos preencher essa janela com os seguintes valores:

• Connection Type/ Datasource: Database JDBC connection


• Name: Conexão 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 botão Wizard. Ele irá


gerar a JDBC URL para você.

A URL gerada será


jdbc:oracle:thin:@oracle.targettrust.com.br:1521:ireportdb.

Caso a porta do seu banco de dados oracle não seja a 1521, você pode
alterar manualmente. O botão wizard é só uma facilidade, se você já souber a
sua JDBC URL, não precisa fazer o Wizard, basta digitar a URL no campo JDBC
URL.

Uma vez definida a sua JDBC URL clique no botão Test para verificar se a
conexão está funcionando. Caso o teste for bem sucedido uma mensagem
pop-up vai avisar que o teste da conexão foi bem sucedido. Do contrário.
Aparecerá um mensagem de erro.

Clique no botão Save e sua conexão estará salva e pronta para uso.
Acesso ao banco de Dados

Definindo a Conexão Ativa

Para indicar ao iReport para usar a conexão que acabamos de criar como
a conexão padrão, devemos definir a conexão que deve ficar ativa enquanto
estamo gerando os nosso relatórios. 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 botão OK.

Figura 3.3 – Set Active Connection

Isso fará com que o iReport utilize a conexão com o Oracle para criar e
visualizar os relatórios.
Acesso ao banco de Dados

Espaço para anotações


4. iReport Wizard
iReport Wizard

Objetivos
• Aprender a utilizar o iReport Wizard
• Criar um relatório utilizando o iReport
• Visualizar o relatório criado
iReport Wizard

Criando um relatório no iReport

Vamos criar o nosso primeiro relatório utilizando o Wizard do iReport.

No menu File selecione o item “Report Wizard”. A janela de diálogo irá


guiar o processo para geração de um relatório. Na passo 1, conforme mostra a
figura 4.1, devemos colocar qual o SQL que vamos usar para gerar esse
relatório. No nosso exemplo, vamos listar todo o conteúdo da tabela vendas.

Figura 4.1 – Passo 1 do iReport Wizard.

No passo 2, vamos selecionar as colunas que desejamos mostrar no relatório.


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 relatório. 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 criação do seu relatório,


conforme mostra a figura.
iReport Wizard

Figura 4.5 – Passo 5 do iReport Wizard

Agora para visualizar o seu relatório recém gerado, selecione no menu


“Build”, a opção “JRViewer preview”.

Figura 4.6 – Menu Build


iReport Wizard

Após selecionar o item mostrado na figura 4.6, clique no menu “Build” e


selecione a opção “Execute report (using active conn.)”. Vai aparecer uma
janela pedindo para salvar o relatório. Salve o relatório e a visualização deve
aparecer, como mostra a figura 4.7.

Figura 4.7 – Preview do relatório gerado pelo Wizard.

Pronto você acaba de construir o primeiro relatório utilizando o iReport.


iReport Wizard

Exercícios

1. Utilizando o Wizard do iReport, crie um relatório 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 relatório 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 relatório “columnar” que mostre o


nome e o preço dos produtos da tabela produto.
a. Clique em File | Report Wizard
b. Entre o comnado SQL “select * from produto”
c. Clique Next
d. Selecione as colunas “preco” e “nome” e clique Next.
e. Clique Next novamente
f. Selecione “Columnar” da combobox de layout e clique no template
classicC.xml. Clique Next.
g. Clique em Finish
h. Salve o relatório com o nome a sua escolha.
i. Para visualizar o relatório clique em Build | Execute report (usinf
active conn.)
iReport Wizard

Espaço para anotações


5. Modelo Relatório iReport
Modelo Relatório iReport

Objetivos
• Entender a estrutura de um relatório iReport
• Saber identificar cada seção de um relatório gerado pelo iReport
• Selecionar as sessões que você quer apresentar no seu relatório
Modelo Relatório iReport

Estrutura de um relatório

Os relatório do JasperReports gerados pelo iReport tem a seguinte


estrutura conforme mostra a tabela 5.1.

1. Título

2. Cabeçalho de Página

3. Cabeçalho de Coluna

4. Cabeçalho de Grupo 1

5. Cabeçalho 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 Página

11. Sumário

Tabela 5.1 – Estrutura de um relatório JasperReports

As sessões 1. Título e 11. Sumário são exibidas apenas uma vez em todo
o relatório. As sessões 2. Cabeçalho da Página e 10. Rodapé da Página
repetem a cada nova página. As sessões 3. Cabeçalho Coluna e 9. Rodapé
Coluna repetem a cada nova coluna dentro da página. As sessões 4, 5, 7 e 8
repetem de acordo com mudanças dos campos de 6. Detalhe. Pode haver
quantos grupos se deseje, inclusive zero.

Essas sessões são chamadas faixas (bands). Então temos a faixo


deTítulo, a faixa de Cabeçalho de Página, a faixa de Detalhe, etc.

Dentro dessas faixas é que são inseridos os elementos do relatório , tais


como os rótulos, campos, imagens, gráficos, etc.
Modelo Relatório iReport

A figura 5.1 mostra as faixas de título, cabeçalho de página, cabeçalho


de coluna, detalhe, rodapé de página.

Figura 5.1 – Faixas do Relatório iReport

Na faixa de título temos o campo de texto estático “Clasic Report


Template”.

A faixa de cabeçalho da página está em branco apenas para dar espaço


entre o título e o cabeçalho da coluna.

Na faixa cabeçalho da coluna temos os campos de texto estáticos “UF”,


“Produto” e “QTDE”.

Na faixa de detalhe temos campos de referência aos valores retornados


pela consulta SQL $F{UF}, $F{Produto} e $F{QTDE}. Não se preocupe com o
que isso quer dizer, vamos explicar em seguida. O importante é identificar as
faixas.

Na faixa de rodapé de página, estão as funções de data e paginação.

Como os elementos já estão dispostos na faixas, fica mais difícil


indentificá-las. Se não houvesse nenhum elemento no relatório as faixas
ficariam como demonstra figura 5.2.
Modelo Relatório iReport

Figura 5.2 – Faixas sem elementos

Note as demais faixas não aparecem porque eles estão


“escondidas”. Para visualizar todas as faixas de um relatório, clique no
menu principal “View” e seleciona a opção “Bands”. A janela de diálogo
mostrada na figura 5.3 vai aparecer. Note que ela lista todas as faixas
desse relatório. As faixas com altiura zero ficam escondidas. As faixas
com tamanho maior que zero aparecem no relatório.Na figura 5.3, a
faixa de detalhe tem altura igual a 19.

Figura 5.3 – Janela de Faixas do iReport


Modelo Relatório iReport

Assim se você quer mostrar alguma faixa que não está aparecendo ou
você está precisando de mais espaço, aumente a altura da faixa. Depois é só
colocar os elementos que desejar.
Modelo Relatório iReport

Variáveis, Parâmetros e campos

Como vocês viram na figura 5.1, apreceram várias expressões como


$F{UF} $V{PAGE_NUMBER}. Mas o que são essas expressões?

$F{<noma da coluna>} é uma referências as colunas (ou campos)


retornados pela consulta SQL do relatório. 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 são mapeadas para os campos do nosso
relatório.

$V{<noma variável} referencia uma variável que é calculada dentro


do relatório e especificado pelo programador. Algumas variáveis como o
número da página, $V{PAGE_NUMBER}, o iReport já disponibiliza
automaticamente para você.

$P{<nome do parâmetro>} indica um parâmetro passado para a


query SQL do relatório. Os paramêtros são uteis para cue possamos executar a
query de acordo com a seleção do usuário. Por exemplo, para trazer o
resultado das vendas de apenas um estado podemos criar um parâmetro na
consulta SQL para trazer os resultados do estado indicado.

Para criar um parâmetro clique no menu principal “View” e selecione a


opção “Report Parameters”. A janela da figura 5.4 vai aparecer.

Figura 5.4 – Parâmetros do Relatório

Clique no Botão “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 Relatório iReport

assim quando você executar o relatório dentro do iReport ele vai perguntar
qual o valor vc quer passar para esse parâmetro. O campo “Default value
expression” indica um valor padrão a ser usado caso o valor para o parâmetro
estado não seja passado ao relatório. Preencha esse campo com “ “SP” ”. O
campo “Parameter Description” contém a descrição do que esse parâmetro
representa. Clique em OK e depois feche a janela de parâmetros.

Figura 5.5 – Adicionando novo parâmetro

Clique no menu principal “View” e selecione “Report Query”. Agora


altere o sql do relatório como indica o código 5.1.

select * from vendas where uf = $P{estado}

Código 5.1 – Query SQL parametrizada

Agora execute o seu relatório clicando no menu principal “Build” e


selecionando a opção “Execute Report (using active conn.)”.

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


parâmetro estado. Preencha com “MG” e o resultado do relatório deve ser o
que mostra a figura 5.7.
Modelo Relatório iReport

Figura 5.6 – Entrada de Parâmetro

Figura 5.7 – Relatório das vendas do estado “MG”


Modelo Relatório iReport

Arquivos gerados pelo iReport

Agora que você já viu os detalhes da interface gráfica, é preciso


entender o que o iReport faz para gerar esse relatórios.

Salve o seu relatório corrente. Clique no menu principal em “File” e


selecione “Save”. Veja que ele vai salvar o nosso relatório com a extensão
.jrxml (JasperReports XML). Esse arquivo é um documento padrão XML. Ele
contém as configurações do nosso relatório. Esse XML é utilizado pelo
JasperReports para gerar um arquivo binário com a extensão .Jasper que é o
arquivo utilizado pelo JasperReports para efetivamente gerar o nosso relatório.

O arquivo .jrxml é muito complexo. Por isso editá-lo manualmente seria


no mínimo trabalhoso e nada produtivo, já que teriamos que descrever em
forma de XML tudo aquilo que pode ser feito de forma gráfica através do
iReport.

Uma das vantagens de se ter o relatório descrito num documento XML


é que ele é facilmente alterável. Por exemplo, se o nome da sua empresa
mudar, e você tiver 100 relatórios aonde fazer a alteração. 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 Relatório iReport

Exercícios

1. Como é dividio um relatorio? E para que serve cada sessão?

2. Como se referencia uma coluna resultante do SQL do relatório no


iReport?

3. Como passar um parâmetro para um relatório?

4. O que é um arquivo .jrxml?

5. O que é um arquivo .jasper?

6. Crie um relatório que recebe como parâmetro um preço mínimo e um


preço máximo e mostre todos os produtos nessa faixa de preço.

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 layout “Tabular” da combobox e o template


classicT.xml

f. Clique Next e depois Clique em Finish

g. Clique em “View | Report Parameters”

h. Clique no botão New

i. No campo parameter name digite mínimo.

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”


Modelo Relatório iReport

r. Adicione a query a cláusula “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 relatório.

t. Para visualizar, clique em Build | Execute Report (using active


conn.)

u. O iReport vai perguntar o valor mínimo e máximo. Entre com os


valores (“0” e “999999”, por exemplo) e veja o resultado.

v. Execute novamente, mas agora mude os valores de mínimo e


máximo (0 e 500) e veja se o relatório muda.
Modelo Relatório iReport

Espaço para anotações


Modelo Relatório iReport
6. Customizando Relatórios
Visualizando e Salvando Relatórios

Objetivos
• Criar campos estáticos no relatório
• Criar campos para apresentar o resultado do SQL
• Criar gráficos para seus relatórios
Visualizando e Salvando Relatórios

Criando um relatório

Até agora vimos como criar um relatório a partir do iReport Wizard.


Agora vamos criar um relatório desde o começo. Para tanto, clique em “File”
no menu principal e selecione a opção “New Document”.

A janela da figura 6.1 irá aparecer. Nela é possível escolher o tamanho,


definir as margens, a orientação do relatório e o nome. Dê o nome de
“MeuRelatorio” e clique no botão OK.

Figura 6.1 – New Document

Um novo relatório em branco vai ser criado como mostra a figura 6.2.
Nele podemos ver que algumas faixas já aparecem com tamanhos pré-
definidos. Agora basta colocar os elementos que desejarmos nas faixas para
montar o nosso relatório.
Visualizando e Salvando Relatórios

Figura 6.2 – Relatório em Branco

A figura 6.3 mostra alguns botões da barra de ferramenta que vamos


utilizar. Da esquerda para a direita, são eles: Imagem Texto Estático, Campo
de texto, SubRelatório, Gráfico e Código de Barra.

Figura 6.3 – Botões da Barra de Ferramenta

Clique no botão de texto estático, arraste o cursor sobre a faixa de Título


para inserir o elemento de texto estático. Dê um duplo clique sobre o elemento
recém inserido e a janela da figura 6.3 deve aparecer. Nela você pode alterar
todas as propriedades desse elemento. Mude o texto para “Meu Relatório” e
aumente o tamanho da fonte para 20.
Visualizando e Salvando Relatórios

Figura 6 .4 – Propriedades do campo Estático

Veja como ficou sobrando espaço na banda de título diminua o tamanho


da faixa de título (como foi mostrado no capítulo 5). Aproveite e diminua a
faixa de Cabeçalho de Pagina (page header) para altura 10, pois tb não vamos
utilizá-la.

Insira mais três elementos de texto estático na faixa de Cabeçalho de


Coluna (columnHeader). Mude o texto para “ID”, “Descrição” e “Preço”.

Para podermos inserir dados nesse relatório 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 botão OK.

Agora clique no botão de campo de texto ( o botão com a letra F


estilizada). Insira três 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 referência da coluna. Por exemplo, a coluna ID da consulta SQL acima
é referenciada com a expressão $F{ID}. Faça 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 expressão vai ficar verde quando você entrar uma expressão válida.
Visualizando e Salvando Relatórios

Figura 6.5 – Propriedades Campo de Texto

Agora esconda as demais faixas (colocando sua altura para zero), menos
a faixa de Rodapé de Página (pageFooter).

Na faixa de rodapé de página, vamos colocar a data e o número da


página. Para tanto adicione dois novos campos de texto na faixa de rodapé de
página. 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 referência a variável do número da página, $V{PAGE_NUMBER}.

Para visualizar as variáveis pré-disponíveis (builtin) em todos os


relatórios basta clicar no menu “View” e selecionar “Report Variables”.

O seu relatório 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 Relatórios

Figura 6.6 – Relatório “Meu Relatório”


Visualizando e Salvando Relatórios

Figura 6.7 – Visualização do “Meu Relatório”


Visualizando e Salvando Relatórios

Inserindo Gráficos no relatório

Agora que já criamos um relatório simples. Vamos colocar um gráfico


para ilustrar o nosso relatório.

Vamos gerar um gráfico comparando os preços dos três produtos da


nossa tabela.

Aumente a altura da faixa de sumário (Summary) para colocar o nosso


gráfico nela.

Clique no botão gráfico e arraste o cursor sobre a faixa de sumário


para criar um novo elemento gráfico. Ao criar o elemento a janela da figura 6.7
vai abrir.

Figura 6.7 – Propriedades do gráfico

Escolha o modelo de gráfico que você quer utilizar. No nosso exemplo,


vamos utilizar o gráfico torta 3D. Selecione esse gráfico na janela da figura 6.7.

Clique na aba “data”, e depois clique no botão “Report Serries”. Uma


janela de diálogo vai abrir, clique no botão “New Serie”. Isso vai trazer uma
janela para você criar uma série com os valores que devem ser mostrados no
gráfico 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 gráfico, $F{PRECO}. Clique no botão “Close” para fechar a janela.
Repita o processo para criar uma série com as descrições do produto para
Visualizando e Salvando Relatórios

usarmos de rótulo no gráfico, ou sjea, crie uma séria PRODUTO.NOME, do tipo


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

Figura 6.8 – Nova Série

De volta a aba “Data”, selecione a série PRODUTO.PRECO para o valor


do campo “Serie 1”. Selecione a série PRODUTO.NOME para o campo “Labels”.

Clique na aba “Chart Details” para configurar os detalhes de exibição


do gráfico. Dê o título de “Preço dos Produtos” ao gráfico e marque as opções
“Show Legend” como mostra figura 6.9. Clique no botão OK para finalizar.
Visualizando e Salvando Relatórios

Figura 6.9 – Detalhes do Gráfico.

Execute seu relatório. A figura 6.10 mostra o resultado final.


Visualizando e Salvando Relatórios

Figura 6.10 – Relatório com Gráfico

Como podemos ver no relatório e no gráfico o produto DVD-Writer é o


mais caro, seguido pelo CPU 2.5Ghz e pelo Monitor 17”.
Visualizando e Salvando Relatórios

Exercícios

1 – Crie um relatório 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 relatório em branco. Não esqueça de dar um título
ao seu relatório.

2 – Adicione um gráfico (em formato pizza 3D) ao seu relatório mostrando a


quantidade de produtos vendidos por estado.

3 – Crie um relatório que liste os nomes dos produtos e os seus preços.


Adicione um gráfico (formato barras 3D) comparando os produtos por preço.
Visualizando e Salvando Relatórios
Visualizando e Salvando Relatórios

7. Criando Subrelatórios
Visualizando e Salvando Relatórios

Objetivos
• Oque é um subrelatório
• Para que serve
• Como usar um subrelatório para gerar relatórios tipo Mestre-Detalhe
Visualizando e Salvando Relatórios

O que é um subrelatório

Um subrelatório é um elemento que você pode adicionar dentro de um


outro relatório. Um subrelatório nada mais é que um relatório inserido dentro
de outro. Assim você pode modularizar seus relatóros, criar relatórios
complexos ou construir relatórios do tipo mestre-detalhe.
Visualizando e Salvando Relatórios

Criando um subrelatório

Para criar um subrelatório primeiro a necessário criar o relatório que


esse subrelatório irá referenciar. Para isso Clique em “File” e selecione “New
Document”. Uma janela vai abrir para você dar o nome do relatório. Chame o
relatório de “MeuSubrelatorio” e clique OK.

Adicione um parâmetro que vai ser usado na consulta SQL. Esse parâmetro é o
ID do produto. Clique em “View” e selecione “Report Parameters”. Adicione um
parâmetro 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 parâmetro

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 referência a coluna nome, que queremos mostrar, no campo
“Textfield expression”. Feche a janela.
Visualizando e Salvando Relatórios

Figura 7.2 – Campo de texto

Seu subrelatório deve estar conforme o que mostra a figura 7.3.

Figura 7.3 – Subrelatório

Agora salve seu subrelatório clicando em “File” e selecionando “Save”.

Crie um novo relatório a partir do iReport Wizard. Use a consulta SQL


“select uf,produto from vendas”. No passo dois do wizard, selecione
Visualizando e Salvando Relatórios

apenas a coluna de UF para ser apresentada no relatório. Após terminar, seu


relatório o wizard deve estar como mostra a figura 7.4.

Figura 7.4 – Relatório que lista os estados

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


a opção “print repeated value” como mostra a figura 7.5. Isso fará com que os
valores que forem repetidos não sejam impressos, ou seja, os estados que já
foram listados não serão listados duas vezes.

Figura 7.5 – Propriedades do Campo de texto UF


Visualizando e Salvando Relatórios

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


inserir o nosso subrelatório. Após aumentar a faixa, insira o subrelatório como
mostra a figura 7.6.

(Botão de Subrelatório da barra de ferramenta)

Figura 7.6 – Relatório com subrelatório

Agora que o elemento de subrelatório está inserido, temos que


configurá-lo para usar o subrelatório que criamos anteriormente. Para isso, dê
duplo clique no elemento de subrelatório. A janela da figura 7.7 vai abrir, em
Subreport expression coloque o caminho do diretório aonde o
MeuSubrelatório.jasper foi gerado. Adicione um parâmetro ao subreport
chamado “prodid” como mostrado na figura 7.8. Clique na aba Subreport e
escolha “Use Connection expression” da lista de opções como mostra a figura
7.9.
Visualizando e Salvando Relatórios

Figura 7.7 – Aba Subreport(Other)

Figura 7.8 – Parâmetro do Subrelatório


Visualizando e Salvando Relatórios

Figura 7.9 – Aba Subreport do elemento SubRelatório.

Agora que o relatório e o subrelatório estão vinculados, execute o


relatório principal. Os produtos vendidos em cada estado agora aparecem
discriminados como mostra a figura 7.10.
Visualizando e Salvando Relatórios

Figura 7-10 – Relatório com Subrelatórios


Visualizando e Salvando Relatórios

Exercícios

1 – Faça um relatório mestre-detalhe utilizando um subreport.

a. Crie um relatório para ser usado como subrelatório

b. Acicione um parâmetro a esse relatório

c. Crie o relatório principal

d. Adicione o elemento de Subrelatório na faixa de Detalhes

e. Edite as propriedades do Subrelatório e passe o parâmetro que o


subrelatório precisa receber. Configure as demais propriedades.

f. Execute o relatório.

2 – Construa outro relatório mestre-detalhe utilizando um subreport. Apresente


o volar total dos produtos vendidos por estado. Adicione um gráfico para
comparar os resultados. Siga os mesmos passos do exercício 1.
Visualizando e Salvando Relatórios

8. Visualizando e Salvando
Relatórios
Visualizando e Salvando Relatórios

Objetivos
• Visualizar o relatório a partir de um programa Java ou de uma página
JSP.
• Salvar o relatório nos diferentes formatos como PDF, HTML, XML,
entre outros.
Visualizando e Salvando Relatórios

Gerando o seu relatório em formato PDF

Você pode gerar o seu relatório e salvar o resultado em um arquivo PDF.


O JasperReports é capaz de salvar o seu relatório em um arquivo PDF sem
complicações.

No código 8.1 temos o exemplo de como salvar o nosso relatório a partir


de uma aplicação Java padrão. Para tanto basta carregar o arquivo .JASPER
gerado pelo iReport e os métodos da biblioteca JasperReports fazem o resto do
serviço.

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
import java.sql.*;
import 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 static final String login = “java”;


private static final String Senha = “java”;
private static final String pdf = “relatorio.pdf”;
private static final String relat = “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 relatório
JasperPrint impressao = JasperFillManager.fillReport(
relat,
parametros,
conn);
//Exibe o relatório
JasperViewer viewer = new JasperViewer(impressao,true);
Viewer.show();

//Salva o relatorio no arquivo


JasperExportManager.exportReportToPdfFile(impressao,pdf);
}
}
Código 8.1 - Aplicação Java Desktop

No código 8.2 temos um exemplo de como mostrar um relatório em


formato PDF numa página JSP. Assim você pode mostrar seus relatórios na
Web.
Visualizando e Salvando Relatórios

<%@ page errorPage="error.jsp" %>


<%@ page import="datasource.*" %>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page 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 não
encontrado.");

//Abre conexão 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();
%>
Código 8.2 – Relatório em uma aplicação Web (report.jsp)
Visualizando e Salvando Relatórios

Gerando o seu relatório em formato HTML

Se você quiser exibir os seus relatórios diretamente na sua aplicação


Web em formato HTML, o código 8.3 mostra como fazer isso.

<%@ page import="net.sf.jasperreports.engine.*" %>


<%@ page import="net.sf.jasperreports.engine.util.*" %>
<%@ page import="net.sf.jasperreports.engine.export.*" %>
<%@ page import="java.util.*" %>
<%@ page 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 não
encontrado.");

JasperReport jasperReport =
(JasperReport)JRLoader.loadObject(reportFile.getPath());

//Abre conexão 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();
%>
Código 8.3 – Relatório aplicação web em formato HTML (report_html.jsp)
Visualizando e Salvando Relatórios

Como você pode observar no código 8.3, o relatório gerado no iReport,


WebappReport.jasper, é carregado (JRLoader.loadObject(...)) e logo após
executado (JasperFillManager.fillReport(...)). Após o relatório
executado, ele é expotardo para o formato HTML. Objeto exporter é setado em
seus parâmetros, indicando qual é o relatório a ser exportado (jasperPrint) e
para onde deve ser exportado (out – a página JSP). O comando exportReport( )
realiza por fim a exportação.
Visualizando e Salvando Relatórios

Exercícios

1 – Crie uma aplicação Java que visualize o relatório gerado pelo iReport
(.jasper) e depois salve o mesmo em um arquivo em fomrato PDF. Abra o PDF
para conferir o seu relatório.

a. Use o exemplo do código 8.1

2 – Crie uma aplicação Web. Construa uma página JSP que carregue o relatório
gerado pelo iReport e mostra como formato PDF.

a. Use o exemplo do código 8.2

3 – Crie uma outra página JSP na sua aplicação Web que mostra o conteúdo do
seu relatório diretamente na página JSP com formato HTML.

a. Use o exemplo do código 8.3

4 - Experimente passar parâmetros para a sua query através das páginas JSP.
Não esqueça de carregar um relatório que aceita parâmetros e lembre o nome
do parâmetro a ser usado.
Visualizando e Salvando Relatórios

Espaço para anotações


T@rgetTrust Treinamento e Tecnologia 1