Nova aba

Propaganda
Jasper iReport
Ferramenta para desenvolvimento e
geração de relatórios utilizando Java
MMHOST
Novembro/2016
Sumário
1. O que é o iReport .............................................................................................................. 1-1
Objetivos .................................................................................................................................... 1-2
O que é o iReport....................................................................................................................... 1-3
O que é o JasperReports ............................................................................................................ 1-5
Exercícios ................................................................................................................................... 1-6
2. Instalando o iReport ......................................................................................................... 2-1
Objetivos .................................................................................................................................... 2-2
Aonde obter o iReport ............................................................................................................... 2-3
Requisitos mínimos do iReport ................................................................................................. 2-4
Instalando o iReport .................................................................................................................. 2-5
3. Acesso ao banco de Dados ................................................................................................ 3-1
Objetivos .................................................................................................................................... 3-2
Configurando DataSource ......................................................................................................... 3-3
Definindo a Conexão Ativa ........................................................................................................ 3-5
4. iReport Wizard ................................................................................................................. 4-1
Objetivos .................................................................................................................................... 4-2
Criando um relatório no iReport ............................................................................................... 4-3
Exercícios ................................................................................................................................... 4-8
5. Modelo Relatório iReport.................................................................................................. 5-1
Objetivos .................................................................................................................................... 5-2
Estrutura de um relatório .......................................................................................................... 5-3
Variáveis, Parâmetros e campos ............................................................................................... 5-6
Arquivos gerados pelo iReport .................................................................................................. 5-9
Exercícios ................................................................................................................................. 5-10
6. Customizando Relatórios .................................................................................................. 6-1
Objetivos .................................................................................................................................... 6-2
Criando um relatório ................................................................................................................. 6-3
Inserindo Gráficos no relatório ......................................................................................... 6-8
Exercícios ................................................................................................................................. 6-11
7. Criando Subrelatórios ..................................................................................................... 7-13
Objetivos .................................................................................................................................. 7-14
O que é um subrelatório.......................................................................................................... 7-15
Criando um subrelatório.......................................................................................................... 7-16
Exercícios ................................................................................................................................. 7-22
8. Visualizando e Salvando Relatórios ................................................................................. 8-23
Objetivos .................................................................................................................................. 8-24
Gerando o seu relatório em formato PDF ............................................................................... 8-25
Gerando o seu relatório em formato HTML ............................................................................ 8-27
II
Exercícios ................................................................................................................................. 8-29
III
Jasper iReport - Ferramenta para desenvolvimento e geração de relatórios utilizando Java
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
1-2
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.
1-3
O que é o iReport
1-4
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.
1-5
O que é o iReport
Exercícios
1. O que faz o iReport?
2. Para que serve o JasperReports?
1-6
O que é o iReport
Espaço para anotações
1-7
O que é o iReport
1-8
Jasper iReport - Ferramenta para desenvolvimento e geração de relatórios utilizando Java
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
2-2
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
2-3
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
2-4
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.
2-5
Instalando o iReport
Espaço para anotações
2-6
Jasper iReport - Ferramenta para desenvolvimento e geração de relatórios utilizando Java
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.
3-2
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
3-3
Acesso ao banco de Dados
Figura 3.2 – Connections properties
você.
Ao preencher todos os campos acima clique no botão Wizard. Ele irá gerar a JDBC URL para
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.
3-4
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.
3-5
Acesso ao banco de Dados
Espaço para anotações
3-6
Jasper iReport - Ferramenta para desenvolvimento e geração de relatórios utilizando Java
4. iReport Wizard
iReport Wizard
Objetivos
 Aprender a utilizar o iReport Wizard
 Criar um relatório utilizando o iReport
 Visualizar o relatório criado
4-2
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.
4-3
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
4-4
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
figura.
No passo 5 basta clicar finish para finalizar a criação do seu relatório, conforme mostra a
4-5
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
4-6
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.
4-7
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.
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 relatório com o nome a sua escolha.
i. Para visualizar o relatório clique em Build | Execute report (usinf active conn.)
4-8
iReport Wizard
Espaço para anotações
4-9
Jasper iReport - Ferramenta para desenvolvimento e geração de relatórios utilizando Java
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
5-2
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.
A figura 5.1 mostra as faixas de título, cabeçalho de página, cabeçalho de coluna, detalhe,
rodapé de página.
5-3
Modelo Relatório iReport
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.
Figura 5.2 – Faixas sem elementos
5-4
Modelo Relatório iReport
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
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.
5-5
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”, 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
5-6
Modelo Relatório iReport
“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.
5-7
Modelo Relatório iReport
Figura 5.6 – Entrada de Parâmetro
Figura 5.7 – Relatório das vendas do estado “MG”
5-8
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.
5-9
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”
5-10
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.
5-11
Modelo Relatório iReport
Espaço para anotações
5-12
Modelo Relatório iReport
5-13
Jasper iReport - Ferramenta para desenvolvimento e geração de relatórios utilizando Java
6. Customizando Relatórios
Customizando 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
6-2
Customizando 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.
6-3
Customizando 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.
6-4
Customizando 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.
6-5
Customizando 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.
6-6
Customizando Relatórios
Figura 6.6 – Relatório “Meu Relatório”
Figura 6.7 – Visualização do “Meu Relatório”
6-7
Customizando 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 usarmos de rótulo no gráfico, ou sjea, crie uma
séria PRODUTO.NOME, do tipo java.lang.String, referenciando $F{NOME}.
6-8
Customizando Relatórios
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.
Figura 6.9 – Detalhes do Gráfico.
6-9
Customizando Relatórios
Execute seu relatório. A figura 6.10 mostra o resultado final.
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”.
6-10
Customizando 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.
6-11
Customizando Relatórios
6-12
Criando Subrelatórios
7. Criando Subrelatórios
7-13
Criando Subrelatórios
Objetivos
 Oque é um subrelatório
 Para que serve
 Como usar um subrelatório para gerar relatórios tipo Mestre-Detalhe
7-14
Criando Subrelató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 mestredetalhe.
7-15
Criando Subrelató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.
7-16
Criando Subrelató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 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.
7-17
Criando Subrelatórios
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
7-18
Criando Subrelató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.
Figura 7.7 – Aba Subreport(Other)
7-19
Criando Subrelatórios
Figura 7.8 – Parâmetro do Subrelatório
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.
7-20
Criando Subrelatórios
Figura 7-10 – Relatório com Subrelatórios
7-21
Criando Subrelató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.
7-22
Visualizando e Salvando Relatórios
8. Visualizando e Salvando Relatórios
8-23
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.
8-24
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
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 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.
8-25
Visualizando e Salvando Relatórios
<%@
<%@
<%@
<%@
<%@
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 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)
8-26
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
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 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)
8-27
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.
8-28
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.
8-29
Visualizando e Salvando Relatórios
Espaço para anotações
8-30
Jasper iReport - Ferramenta para desenvolvimento e geração de relatórios utilizando Java
T@rgetTrust Treinamento e Tecnologia
1
Download