segunda-feira, 20 de fevereiro de 2012

Classe Para Gerar Chamar o Relatorio do IReport

Pessoal segue uma classe fornecida pelo Marcos Vinícius para chamar o relatório gerado pelo IReport


1.  /*
2.  * @(#)Relatorio.java 1.0 28/04/2006
3.  *
4.  * Copyright 2006 Marcos Vinícius Soares. Todos os direitos reservados.
5.  * mvsoares@estadao.com.br
6.  *
7.  */
8.   
9.  import java.sql.*;
10. import java.net.URL;
11. import java.util.HashMap;
12. import net.sf.jasperreports.engine.util.JRLoader;
13. import net.sf.jasperreports.view.JasperViewer;
14. import net.sf.jasperreports.engine.*;
15. import conexao.Conexao;
16.  
17. /**
18. * Relatorio.java

19. *
20.  *
A classe Relatorio deve ser utilizada para emissão de relatórios. Após a
21. * criação de algum relatório é possível exibí-lo na tela, exportá-lo para um
22.  * arquivo pdf/html ou enviá-lo direto para impressão.
23.  *
24.  *
A classe manipula relatórios desenvolvidos utilizando-se a ferramenta
25.  * iReport e utiliza a ferramenta JasperReports para emissão dos relatórios
26.  *
27. * @author Marcos Vinícius Soares
28. */
29. public class Relatorio {
30.  
31. /** Representa o relatório gerado. */
32. private JasperPrint jasperPrint_;
33.  
34. /**
35. * Cria um novo Relatorio.
36. *
37. * @param conn Conexão com o banco de dados.
38. * @param parameters Parâmetros a serem exibidos no relatório.
39. * @param localRelatorio Localização do relatório.
40. * @throws JRException Caso o relatório não seja encontrado ou haja
41. * algum problema com ele, uma exceção é gerada.
42. */
43. public Relatorio(Conexao conn, HashMap parameters, URL localRelatorio) throws JRException{
44.  
45. try {
46.  
47. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
48. // Ou seja, o arquivo .jasper
49. JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
50.  
51. // JasperPrint representa o relatório gerado.
52. // É criado um JasperPrint a partir de um JasperReport, contendo o relatório preenchido.
53. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, conn.getConnection());
54.  
55. catch (JRException e) { throw e; }
56. }
57.  
58.  
59.  
60. /**
61. * Cria um novo Relatorio.
62. *
63. * @param conn Conexão com o banco de dados.
64. * @param parameters Parâmetros a serem exibidos no relatório.
65. * @param localRelatorio Localização do relatório.
66. * @throws JRException Caso o relatório não seja encontrado ou haja
67. * algum problema com ele, uma exceção é gerada.
68. */
69. public Relatorio(Conexao conn, HashMap parameters, String localRelatorio) throws JRException{
70.  
71. try {
72.  
73. // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
74. // Ou seja, o arquivo .jasper
75. JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
76.  
77. // JasperPrint representa o relatório gerado.
78. // É criado um JasperPrint a partir de um JasperReport, contendo o relatório preenchido.
79. this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, conn.getConnection());
80.  
81. catch (JRException e) { throw e; }
82. }
83.  
84.  
85.  
86. /**
87. * Cria um novo Relatorio.
88. *
89. * @param conn Conexão com o banco de dados.
90. * @param sql Expressão SQL (SELECT...) a ser utilizada para preenchimento do relatório
91. * @param parameters Parâmetros a serem exibidos no relatório.
92. * @param localRelatorio Localização do relatório.
93. * @throws JRException Caso o relatório não seja encontrado ou haja
94. * algum problema com ele, uma exceção é gerada.
95. * @throws SQLException Caso exista alguma divergência ou problema com
96. * a Expressão SQL passada como parâmetro, uma exceção é gerada.
97. */
98. public Relatorio(Conexao conn, String sql,
99. HashMap parameters, URL localRelatorio) throws SQLException, JRException {
100.          
101.         try {
102.          
103.         // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
104.         // Ou seja, o arquivo .jasper
105.         JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
106.          
107.         // Resultado da consulta
108.         ResultSet rs = conn.executeQuery(sql);
109.          
110.         // JRResultSetDataSource é uma implementaçao de JRDataSource, o qual é requerido
111.         // como parametro para preencher o relatório criado.
112.         // Ele armazena o dados do ResultSet
113.         JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
114.          
115.         // JasperPrint representa o relatório gerado.
116.         // É criado um JasperPrint a partir de um JasperReport, contendo o
117.         // relatório preenchido.
118.         this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrRS);
119.          
120.         rs.close();
121.          
122.         }
123.         catch (SQLException e) { throw e; }
124.         catch (JRException e) { throw e; }
125.         }
126.          
127.          
128.          
129.         /**
130.         * Cria um novo Relatorio.
131.         *
132.         * @param conn Conexão com o banco de dados.
133.         * @param sql Expressão SQL (SELECT...) a ser utilizada para preenchimento do relatório
134.         * @param parameters Parâmetros a serem exibidos no relatório.
135.         * @param localRelatorio Localização do relatório.
136.         * @throws JRException Caso o relatório não seja encontrado ou haja
137.         * algum problema com ele, uma exceção é gerada.
138.         * @throws SQLException Caso exista alguma divergência ou problema com
139.         * a Expressão SQL passada como parâmetro, uma exceção é gerada.
140.         */
141.         public Relatorio(Conexao conn, String sql,
142.         HashMap parameters, String localRelatorio) throws SQLException, JRException {
143.          
144.         try {
145.          
146.         // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
147.         // Ou seja, o arquivo .jasper
148.         JasperReport jr = (JasperReport)JRLoader.loadObject(localRelatorio);
149.          
150.         // Resultado da consulta
151.         ResultSet rs = conn.executeQuery(sql);
152.          
153.         // JRResultSetDataSource é uma implementaçao de JRDataSource, o qual é requerido
154.         // como parametro para preencher o relatório criado.
155.         // Ele armazena o dados do ResultSet
156.         JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
157.          
158.         // JasperPrint representa o relatório gerado.
159.         // É criado um JasperPrint a partir de um JasperReport, contendo o
160.         // relatório preenchido.
161.         this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrRS);
162.          
163.         rs.close();
164.          
165.         }
166.         catch (SQLException e) { throw e; }
167.         catch (JRException e) { throw e; }
168.         }
169.          
170.          
171.          
172.         /**
173.         * Cria um novo Relatorio.
174.         *
175.         * @param parameters Parâmetros a serem exibidos no relatório.
176.         * @param localRelatorio Localização do relatório.
177.         * @throws JRException Caso o relatório não seja encontrado ou haja
178.         * algum problema com ele, uma exceção é gerada.
179.         */
180.         public Relatorio(HashMap parameters, URL localRelatorio) throws JRException {
181.          
182.         try {
183.          
184.         // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
185.         // Ou seja, o arquivo .jasper
186.         JasperReport jr = (JasperReport) JRLoader.loadObject(localRelatorio);
187.          
188.         // JREmptyDataSource é uma implementaçao de JRDataSource, o qual é requerido
189.         // como parametro para preencher o relatório criado.
190.         // Ele armazena o dados do ResultSet, que, neste caso, é vazio
191.         JREmptyDataSource jrEDS = new JREmptyDataSource();
192.          
193.         // Jasper Print representa o relatório gerado.
194.         // É criado um JasperPrint a partir de um JasperReport, contendo o
195.         // relatório preenchido.
196.         this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrEDS);
197.          
198.         catch (JRException e) { throw e; }
199.         }
200.          
201.          
202.          
203.         /**
204.         * Cria um novo Relatorio
205.         *
206.         * @param parameters Parâmetros a serem exibidos no relatório.
207.         * @param localRelatorio Localização do relatório.
208.         * @throws JRException Caso o relatório não seja encontrado ou haja
209.         * algum problema com ele, uma exceção é gerada.
210.         */
211.         public Relatorio(HashMap parameters, String localRelatorio) throws JRException {
212.          
213.         try {
214.          
215.         // O objeto JasperReport representa o objeto JasperDesign (arquivo .jrxml) compilado.
216.         // Ou seja, o arquivo .jasper
217.         JasperReport jr = (JasperReport) JRLoader.loadObject(localRelatorio);
218.          
219.         // JREmptyDataSource é uma implementaçao de JRDataSource, o qual é requerido
220.         // como parametro para preencher o relatório criado.
221.         // Ele armazena o dados do ResultSet, que, neste caso, é vazio
222.         JREmptyDataSource jrEDS = new JREmptyDataSource();
223.          
224.         // Jasper Print representa o relatório gerado.
225.         // É criado um JasperPrint a partir de um JasperReport, contendo o
226.         // relatório preenchido.
227.         this.jasperPrint_ = JasperFillManager.fillReport(jr, parameters, jrEDS);
228.          
229.         catch (JRException e) { throw e; }
230.         }
231.          
232.          
233.          
234.         /**
235.         * Exibe o relatório na tela.
236.         */
237.         public void exibirRelatorio() {
238.         // emite o relatório na tela
239.         // false indica que a aplicação não será finalizada caso o relatório seja fechado
240.         JasperViewer.viewReport(this.jasperPrint_, false);
241.         }
242.          
243.          
244.          
245.         /**
246.         * Grava o relatório em um arquivo de formato pdf.
247.         *
248.         * @param caminhoDestino Caminho onde o arquivo será gravado.
249.         */
250.         public void exportaParaPdf(String caminhoDestino) throws JRException {
251.          
252.         try {
253.         // Gera o arquivo PDF
254.         JasperExportManager.exportReportToPdfFile(this.jasperPrint_, caminhoDestino);
255.         catch (JRException e) { throw e; }
256.          
257.         }
258.          
259.          
260.          
261.         /**
262.         * Grava o relatório em um arquivo de formato html.
263.         *
264.         * @param caminhoDestino Caminho onde o arquivo será gravado.
265.         */
266.         public void exportaParaHtml(String caminhoDestino) throws JRException {
267.          
268.         try {
269.         // Gera o arquivo PDF
270.         JasperExportManager.exportReportToHtmlFile(this.jasperPrint_, caminhoDestino);
271.         catch (JRException e) { throw e; }
272.          
273.         }
274.          
275.          
276.          
277.         /**
278.         * Envia o relatório para impressão, exibindo uma caixa de dialogo de impressão ou não.
279.         *
280.         * @param exibeCaixaDialogo Boolean indicando se será exibida uma caixa de diálogo ou não.
281.         */
282.         public void imprimir(boolean exibeCaixaDialogo) throws JRException {
283.          
284.         try {
285.         // Imprime o relatório
286.         // o segundo parâmetro indica se existirá uma caixa de dialogo antes ou nao
287.         JasperPrintManager.printReport(this.jasperPrint_, exibeCaixaDialogo);
288.         catch (JRException e) { throw e; }
289.          
290.         }
291.          
292.          
293.          
294.         }


Primeiro vamos criar um relatório através de um dos métodos disponíveis, depois basta chamar algum método....

Esse objeto conexão representa uma conexão com o banco de dados, e o método getConn retorna o objeto Connection associado a ele. No caso, você deve implementar o seu, pois não sei qual banco de dados você está utilizando.

Um comentário:

Debora Duarte disse...

Se você gostou do artigo, compartilha com seu coletas

Contribua com este blog, doe qualquer quantia.