Escolar Documentos
Profissional Documentos
Cultura Documentos
Jasper Ireport em Portugues Excelente Apostila Curso Completo de Java Ireport
Jasper Ireport em Portugues Excelente Apostila Curso Completo de Java Ireport
Jasper iReport
TJAVIREP
Setembro/2005
Apostila desenvolvida especialmente para a Target Informtica Ltda. Sua cpia ou reproduo expressamente proibida. T@rgetTrust Treinamento e Tecnologia I
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
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
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
Instalando o iReport
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
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.
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.
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
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.
Isso far com que o iReport utilize a conexo com o Oracle para criar e visualizar os relatrios.
4. iReport Wizard
iReport Wizard
Objetivos
Aprender a utilizar o iReport Wizard Criar um relatrio utilizando o iReport Visualizar o relatrio criado
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
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.
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
Agora para visualizar o seu relatrio recm gerado, selecione no menu Build, a opo JRViewer preview.
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.
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
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
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.
A figura 5.1 mostra as faixas de ttulo, cabealho de pgina, cabealho de coluna, detalhe, rodap de pgina.
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.
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.
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.
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,
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.
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.
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 e o template
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
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.
6. Customizando Relatrios
Objetivos
Criar campos estticos no relatrio Criar campos para apresentar o resultado do SQL Criar grficos para seus 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.
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.
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.
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.
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.
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.
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
usarmos de rtulo no grfico, ou sjea, crie uma sria PRODUTO.NOME, do tipo java.lang.String, referenciando $F{NOME}.
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.
Como podemos ver no relatrio e no grfico o produto DVD-Writer o mais caro, seguido pelo CPU 2.5Ghz e pelo Monitor 17.
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.
7. Criando Subrelatrios
Objetivos
Oque um subrelatrio Para que serve Como usar um subrelatrio para gerar relatrios tipo Mestre-Detalhe
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.
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.
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.
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
apenas a coluna de UF para ser apresentada no relatrio. Aps terminar, seu relatrio o wizard deve estar como mostra a figura 7.4.
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.
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.
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.
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.
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.
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.
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.
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();
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)
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.
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.