Como gerar relatório no eclipse?

16 respostas
brunorota

Olá galera
Eu preciso gerar relatórios puxando uns dados do banco
Eu jah vi q existem algumas ferramentas para isso JasperReports
Como eu faço pra instala esse JasperReports no eclipse?
Estou usando o eclipse galileu para o ubuntu 64bits

Onde eu acho esse JasperReports e instalo ele?

Atenciosamente

16 Respostas

dude

Vc pode baixar o Eclipse IDE for Java and Report Developers, ele vem o BIRT, uma ferramenta para fazer relatorios.
O jasper é mto bom para criação de relatorios tambem, pode encontralo em http://jasperforge.org/plugins/project/project_home.php?group_id=102

Metaleiro

[color=darkblue] O Jasper é uma boa opção, mas se quiser algo mais simples, você pode gerar uma planilha em Excel, você tem a opção de JExcel e POI também :[/color]

JExcel

POI-HSSF

brunorota

esse birt gera relatórios para aplicativos Desktop tbm?

dude

o BIRT é especifico para aplicações web.
já vi algumas explicações de como chamar os relatorios numa aplicação desktop, mas axo melhor usar um especifico para desktop.

brunorota

HUmmm valew
Estou baixando o Jasper Reports mesmo
Esse eh pra Desktop mesmo neh?

brunorota

I ae galera
Eu baixei o jasper reports

Como eu instalo ele no eclipse?

dude

Vc só precisa adicionar a biblioteca que baixou no eclipse.

dude

Para criar os relatorios em Jasper vc deve utilizar o IReport. Ferramenta visual para relatorios.
Download IReport
Para criar ou chamar dentro do java os relatorios pode seguir este tutorial: Tutorial

brunorota

Eh eu tinha visto ^^
Valew pelo tutorial
Eu dei uma lida me pareceu bem facil de usar
Vou baixar o IReport
E qualquer dúvida eu posto aqui
Valew

brunorota

dude
Eu consegui fazer o relatório no iReport
Fazer a conexão e tals

Agora como eu faço pra chamar esse relatório q eu fiz pelo eclipse?

Eu uso o linux

Salvei o relatório em /home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml

Como eu faço pra chamar ele pelo eclipse?

Falows

brunorota

mais uma duvida
Nesse tutorial nao mostra como eu inserir mais de uma sql, pra pega dados de varias tabelas e colocar no mesmo relatório

Tem como fazer isso?

brunorota

esta dando erro no meu codigo

package teste;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;

public class IReportExemple {
	
	private static final String url = "jdbc:mysql://localhost:3306/banco_eclusas";
	private static final String driver = "com.mysql.jdbc.Driver";
	private static final String login = "root";
	private static final String pwd = "root";
   
	public IReportExemple() {
	}
   
	public void gerar( String jasperFile ) throws JRException , SQLException, ClassNotFoundException {

		Class.forName( driver );
		Connection con = DriverManager.getConnection( url , login , pwd );
		Statement stm = con.createStatement();
		String query = "select * from componentes";
		ResultSet rs = stm.executeQuery( query );

		//implementação da interface JRDataSource para DataSource ResultSet
		JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
   
		//executa o relatório
		Map parametros = new HashMap();
		parametros.put("nomeComponente", new String());

		/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint    */
		JasperFillManager.fillReportToFile( jasperFile, parametros, jrRS );
  
		/* Exporta para o formato PDF */
		JasperExportManager.exportReportToPdfFile( "relatorio.jrprint" );
	}
   
	public static void main(String[] args) {
		try {
			new IReportExemple().gerar( "/home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml " );
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


}

o erro é o seguinte

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: /home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml 
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:81)
	at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:462)
	at teste.IReportExemple.gerar(IReportExemple.java:42)
	at teste.IReportExemple.main(IReportExemple.java:50)
Caused by: java.io.FileNotFoundException: /home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml 
	... 4 more

O que eu estou fazendo de errado?

dude

ele n tah achando o relatorio parece… vc compilo o relatorio?!
ele tem q geral o .jrxml e o .jasper dentro da pasta “/home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml”

brunorota

ae dude

Agora eu gerei outro relatório, gerou o .jasper e o .jrxml

ae em vez de eu passar o .jrxml eu passo o .jasper

da o seguinte erro

Exception in thread "main" java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
	at java.lang.Class.getDeclaredField(Class.java:1880)
	at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1610)
	at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52)
	at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:413)
	at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480)
	at net.sf.jasperreports.engine.base.JRBaseReport.readObject(JRBaseReport.java:736)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:94)
	at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:462)
	at teste.IReportExemple.gerar(IReportExemple.java:42)
	at teste.IReportExemple.main(IReportExemple.java:50)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 40 more

o codigo ficou assim

package teste;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;

public class IReportExemple {
	
	private static final String url = "jdbc:mysql://localhost:3306/banco_eclusas";
	private static final String driver = "com.mysql.jdbc.Driver";
	private static final String login = "root";
	private static final String pwd = "root";
   
	public IReportExemple() {
	}
   
	public void gerar( String jasperFile ) throws JRException , SQLException, ClassNotFoundException {

		Class.forName( driver );
		Connection con = DriverManager.getConnection( url , login , pwd );
		Statement stm = con.createStatement();
		String query = "select * from componentes";
		ResultSet rs = stm.executeQuery( query );

		//implementação da interface JRDataSource para DataSource ResultSet
		JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
   
		//executa o relatório
		Map parametros = new HashMap();
		parametros.put("nomeComponente", new String());

		/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint    */
		JasperFillManager.fillReportToFile( jasperFile, parametros, jrRS );
  
		/* Exporta para o formato PDF */
		JasperExportManager.exportReportToPdfFile( "relatorio.jrprint" );
	}
   
	public static void main(String[] args) {
		try {
			new IReportExemple().gerar( "/home/bruno/Desktop/relatorios/report1.jasper" );
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


}

Ta dificil isso aki =P

Mais eu consigo com a ajuda de todos ^^

Falows

dude

mas é o jxml que vc tem q chamar.
precisa ter o .jasper tbm mas chama o .jxml

brunorota

Bom modificado para chamar o jrxml deu o seguinte erro

net.sf.jasperreports.engine.JRException: Error loading object from file : /home/bruno/Desktop/relatorios/report1.jrxml at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:98) at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:462) at teste.IReportExemple.gerar(IReportExemple.java:42) at teste.IReportExemple.main(IReportExemple.java:50) Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280) at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:57) at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:93) ... 3 more

Oq tem de errado?

Criado 25 de junho de 2009
Ultima resposta 30 de jun. de 2009
Respostas 16
Participantes 3