Imprimir formulário usando IReport

E a galera blza?

Seguinte, estou fazendo um formulário, usei o plugin do IReport do NetBeans, criei o formulário usando o Wizard template do IReport, no preview ele esta funcionando, esta pegando todos os dados certinho, mas o problema é que não sei como coloca-lo no meu programa, como fazer para que minha classe chame o formulário para que ele possa ser impresso. Procurei em vários sites, todos me ensinam a mexer no IReport mas não me ensina como fazer a minha classe chamar o formulário, então conto com a ajuda de vocês.

Olá,

segue … http://www.guj.com.br/content/articles/reports/JasperReportsIReport.pdf

Vlw pelo material, me ajudo muito, mas ainda sim não consegui fazer funciona, olha o trecho do código que chama o formulário:

String query = "select * from avaliacao"; rs = stm.executeQuery(query); JRResultSetDataSource jrRS = new JRResultSetDataSource(rs); Map parameters = new HashMap(); JasperFillManager.fillReportToFile("ad1.jasper", parameters, jrRS); JasperExportManager.exportReportToPdfFile("ad1.jrprint"); JasperViewer.viewReport("ad1.pdf", false)

o meu formulário chama ad1, mas ele acusa erro, diz que não encontrou o arquivos ad1.jasper, mas esse arquivo esta na pasta src do projeto no mesmo pacote da classe, não sei qual é o problema, se alguém puder me dar uma luz.

Vc está utilizando web ou desktop ?

Estou usando desktop, e as biblioteca que estou usando é net.s* e nao dori.* , não sei se isso faz alguma diferença, vi os 2 nos materais que encontrei.

Acredito que faz sim, tente usar a dori

Mas como faço pra usar a dori, ela não aparece pra mim, estava lendo, achei um comentario dizendo q a biblioteca dori pertence as versões mais antiga do jasperReport e a .net é das mais novas, mas mesmo assim vou tentar com dori, so preciso saber como add esse .dori.

dei uma olhada no… http://jasperforge.org/projects/jasperreports e não achei necessidade de utilizar a .dori .

obs…

  • Talvez, não sei ao certo, tente utilizar o caminho absoluto do PDF.
  • tente utilizar o printReport(string, boolean) da classe net.sf.jasperreports.engine.JasperPrintManager

tente consultar …

Cara tentei usar do jeito q tava la e ainda sim não deu certo, tentei usar o caminho todo do arquivo como vc disse e ainda não funcionou. Não sei mais o que tentar

tente isso …


   String query = "select * from avaliacao";
            rs = stm.executeQuery(query);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
            Map parameters = new HashMap();
            JasperPrint report = JasperFillManager.fillReport("ad1.jasper", parameters, jrRS);
            JasperExportManager.exportReportToPdfFile(report );
            //exibe o resultado
            JasperViewer viewer = new JasperViewer( report , true );
	    viewer.show();

Continua com erro, coloquei src/dados/ad1.jasper onde era so ad1.jasper o erro mudou, mas continua dando na mesma linha:

JasperPrint report = JasperFillManager.fillReport("src/dados/ad1.jasper", parameters, jrRS);

o erro é esse:

   String query = "select * from avaliacao";
            rs = stm.executeQuery(query);
            JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
            Map parameters = new HashMap();
            JasperPrint report = JasperFillManager.fillReport("ad1.jasper", parameters, jrRS);
            JasperExportManager.exportReportToPdfFile(report );
            //exibe o resultado
            JasperViewer viewer = new JasperViewer( report , true );
	    viewer.show();

vc já tentou esse código ?

Testei e não deu certo, não sei mais o que fazer

vc ta usando spring?

ele ta dando erro ql alguma lib que esta faltando do spring…
como eu nao uso nao sei te dizer qual eh

org/springframework/core/io/Resource

Então esse erro é estranho pra mim, nunca tinha visto, ele so acontece quando tento usar a biblioteca .net, continuo perdido aqui, ja li vários foruns outra pessoas com problema para chamar o formulário, mas ninguem com o mesmo erro que eu, não faço idéia onde tenho que corrigir.

Olá, fiz o teste com este código e o pdf apareceu … faça um arquivo.jasper simples e tente executa-lo atraves deste codigo…


package br.com.guj;

import java.io.File;
import java.io.FileInputStream;
import java.net.URI;
import java.util.Collections;
import java.util.List;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

public class JasperRelatorio {
	
	
	public static void main(String[] args) {
		
		
		
try {
			URI uri = 	JasperRelatorio.class.getResource("/jaspers/relatorio_guj_001.jasper").toURI();
	
			FileInputStream fileInputStream = new FileInputStream(new File(uri));
			
			List lista = Collections.singletonList("teste");
			JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(lista,false);
	
	
	
			JasperPrint report = JasperFillManager.fillReport(fileInputStream, null, dataSource);
			
			JasperViewer viewer = new JasperViewer(report);
			
			viewer.viewReport(report);

			fileInputStream.close();
			

		} catch (JRException e) {
			System.out.println("Erro ao tentar exportar o arquivo para PDF :: [Jasper export error] ");
			e.printStackTrace();
			
		}catch(Exception e ) {
			System.out.println("Erro generico ao tentar gerar o arquivo PDF :: [Exception] ");
			e.printStackTrace();
			
		}
		finally {
			System.out.print("Procedimento de Exportação de PDF concluido.");
		}
		
	}

}

Oi amigo, tive o mesmo problema.
Crie um pacote Relatorios por exemplo, e depois crie dentro dele um arquivo java vazio, de o nome do sue relatorio e cole o codigo abaixo, e no seu formulario crie um botao para imprimir, e sobre este botao: botao direito, events, action, actionperformed e escreva o seguinte:
new seupacote.suaclasse(); assim o botao vai chamar a classe pra imprimir o relatorio.
Segue o meu codigo que está funcionando direitinho, substitua alguns dados pelos seus ok.

Tem que adicionar as bibliotecas instaladas no iReport ao projeto pelo netbeans para poder funcionar.
No meu caso, estou usando o iReport 4.0, as blibliotecas dele ficam na pasta C:\Program Files\JasperSoft\iReport-4.0.0\ireport\modules\ext, adicione todas, (no meu caso a ant-1.7.1, eu nao instalei porque dava erro), e adicionei tambem a biblioteca ireport.jar, do iReport 3.1. Para adicionar as bibliotecas ao projeto, clique com o botão direito sobre o projeto, dentro do netbeans, propriedades, Bibliotecas, aba Compilar, Adicionar JAR/Pasta, selecione todas e de um ok. Depois de tudo pronto, mande limpar e construir. Feito isso, vá a pasta do seu projeto e na pasta dist, onde fica o jar que vai executar a aplicação, e copie os relatorios .jasper para esta pasta dist que da certinho. Mas lembre-se, se for limpar e construir outra vez, copie novamente, pois esta pasta dist e substituida toda vez que mandamos limpar e construir o projeto. Obrigado a todos pela ajuda. Não teria conseguido sem vcs, um grande abraço. Segue o codigo fonte da classe que chama o relatorio:

package Relatorios;

import Utilitarios.Conexao;
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

public class TedCaixa{

Conexao con = new Conexao(); // conexao com o banco de dados, use a sua

public TedCaixa(){

try
{
con.conecta();
con.executeSQL(“select * from pagamentos”);

JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
JasperReport report = (JasperReport) JRLoader.loadObject(“tedcaixa.jasper”);
JasperPrint relatorio = JasperFillManager.fillReport(report, new HashMap(), jrRS);
JasperViewer viewer = new JasperViewer(relatorio,false);
viewer.setTitle(“Relatório de Pagamentos”);
viewer.setVisible(true);
viewer.show();

}

catch (Exception erro)
{
JOptionPane.showMessageDialog(null, " Relatorio não localizado " + erro);

}
}

public static void main (String args[])
{
TedCaixa app = new TedCaixa();

}
}

Neste caso, dava tudo certo dentro do NetBeans, mas quando eu rodava o aplicativo o relatorio não era exibido, pois faltava adicionar as bibliotecas ao projeto. Espero que estas informações ajudem alguem assim como me ajudaram. Abraços a todos. Obrigado