Boa tar de amigos,
Criei um relatório no iReport e agora preciso que quando o usuário clique no gerar relatório seja apresentado o relatório do iReport(doc, ou xls, ou pdf ou etc…), alguém tem alguma idéia que eu possa usar?
Grande Abç
Logan
Boa tar de amigos,
Criei um relatório no iReport e agora preciso que quando o usuário clique no gerar relatório seja apresentado o relatório do iReport(doc, ou xls, ou pdf ou etc…), alguém tem alguma idéia que eu possa usar?
Grande Abç
Logan
Boas loganwlogan.
Como não deste mais pormenores vou supor que o teu relatorio é um simples relatório, sem ligação a bases de dados.
Então, no teu frame, chamas uma classe, por exemplo, que irá tratar do relatório.
//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
URL arquivo = getClass().getResource("teste.jasper");
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
//aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,null);
//isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);
Bem, não sei se era isto, senão manda mais pormenores.
Boa sorte ai
Valeu Pela ajuda, funcionou direitinho!!!
[]´s
Logan
tentei fazer como o exemplo acima porem deu erro na 5º linha… “reference to fillreport is ambiguous…”
[code]/*
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.jasperreports.engine.;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.;
/**
*
@author Administrador
*/
public class StatusCliente {
private static Connection getConnection() throws
ClassNotFoundException, SQLException {
String driver = “com.mysql.jdbc.Driver”;
String url = “jdbc:mysql://localhost:3306/laboratorio”;
String user = “root”;
String password = “root”;
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, password);
return con;
}
public static void main(String[] args) throws JRException, Exception {
new StatusCliente().geraRelatorio();
}
private void geraRelatorio() throws JRException {
//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
URL arquivo = getClass().getResource(“C:\Documents and Settings\Administrador\Meus documentos\projetos\distribuidora\src\relatorio\status\StatusCliente.jasper”);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
//aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, null);
//isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);
}
}
[/code]
[quote=maxwellmargotti]tentei fazer como o exemplo acima porem deu erro na 5º linha… “reference to fillreport is ambiguous…”
[code]/*
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.jasperreports.engine.;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.;
/**
*
@author Administrador
*/
public class StatusCliente {
private static Connection getConnection() throws
ClassNotFoundException, SQLException {
String driver = “com.mysql.jdbc.Driver”;
String url = “jdbc:mysql://localhost:3306/laboratorio”;
String user = “root”;
String password = “root”;
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, password);
return con;
}
public static void main(String[] args) throws JRException, Exception {
new StatusCliente().geraRelatorio();
}
private void geraRelatorio() throws JRException {
//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
URL arquivo = getClass().getResource(“C:\Documents and Settings\Administrador\Meus documentos\projetos\distribuidora\src\relatorio\status\StatusCliente.jasper”);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
//aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, null);
//isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);
}
}
[/code][/quote]
Kra, passei pelo mesmo problema, mas consegui solucionar.
É o seguinte:
Existem vários métodos fillReport() e como seus parâmetros são objetos, se vc passar null o java não vai conseguir identificar a qual dos métodos vc está se referindo.
Então basta instanciar um dos objetos e passá-lo, mesmo q não vá ser usado, por exemplo.
URL arquivo = getClass().getResource("..\\RelFormulas.jasper");
HashMap map = new HashMap();
try {
JasperReport jr = (JasperReport) JRLoader.loadObject(arquivo);
JasperPrint jp = JasperFillManager.fillReport(jr, map,ConnectionFactory.conn);
JasperViewer jv = new JasperViewer(jp, false);
jv.setVisible(true);
Nesse caso eu não uso o ojeto map, mas passo por parâmetro simplesmente para identificar o método fillReport() correto.
Espero ter ajudado!
Abraço.
Bom dia estou tendo problemas com os
import net.sf.jasperreports.engine.;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.;
não achei esses pacotes no ireport
Olá amigo
adicione o jar que está nesta pasta:
jasperreports-3.7.2.jar
iReport-3.7.2/ireport/modules/ext
Dependendo da versão que esteja utilizando.
Silvio Guedes
Muito obrigado Silvio agora funiconou certinho
Boa Noite.
Coloquei esse Codigo e está dando o seguinte erro:
"reference to fillReport is Ambiguou, both method fillReport(net.sf.jasperreport.engine.JasperReport.java.util.Map.java.sql.Connection) in net.sf.jasperreports.engine.JasperFillManager and method fillReport(net.sf.jasperreport.engine.JasperReport.java.util.Map,net.sf.jasperreport.engineJRDataSource) in net.sf.jasperreport.engine.JasperFillManager match
//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
URL arquivo = getClass().getResource(“C:\Documents and Settings\Administrador\Meus documentos\projetos\distribuidora\src\relatorio\status\StatusCliente.jasper”);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
//aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, null);
//isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);
ERRO - O Ant está mal-configurado e não pode ser executado.
java.lang.IllegalStateException: Wrong class loader is finding Ant: sun.misc.Launcher$ExtClassLoader@757aef
at org.apache.tools.ant.module.bridge.AntBridge.createAntInstance(AntBridge.java:291)
at org.apache.tools.ant.module.bridge.AntBridge.getAntInstance(AntBridge.java:267)
at org.apache.tools.ant.module.bridge.AntBridge.getInterface(AntBridge.java:256)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:497)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)
alguem sabe dizer ao que se refere o codigo é esse:
package relatorio;
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.view.JasperViewer;
import utilitarios.conexao;
public class relat {
conexao con = new conexao();
public relat() {
try
{
con.conecta();
con.executeSQL(“SELECT * from cidade”);
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
JasperPrint jasperPrint = JasperFillManager.fillReport(
“relatorios/report1.jasper”, new HashMap(), jrRS);
JasperViewer.viewReport(jasperPrint);
} catch (Exception erro){
JOptionPane.showMessageDialog(null,“deu erro =”+erro);
}
}
public static void main (String args[])
{
new relat();
}
}
estou perdida se alguem puder ajudar
Olá
use as tag’s para formatar seu código fonte:
package relatorio;
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.view.JasperViewer;
import utilitarios.conexao;
public class relat {
conexao con = new conexao();
public relat() {
try
{
con.conecta();
con.executeSQL("SELECT * from cidade");
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
JasperPrint jasperPrint = JasperFillManager.fillReport(
"relatorios/report1.jasper", new HashMap(), jrRS);
JasperViewer.viewReport(jasperPrint);
} catch (Exception erro){
JOptionPane.showMessageDialog(null,"deu erro ="+erro);
}
}
public static void main (String args[])
{
new relat();
}
}
Silvio Guedes
Ora viva…
Alquem poderia postar o ficheiro utilitario.conexao ???
Tenho ‘partido muita pedra’ para tentar efectuar o preview de um report.
Penso que só me falta este ficheiro.
Brigadão
Peter
alguém sabe me dizer como salvar direto o arquivo em PDF, sem abrir o viewer?
já usei o jasper na web, usando ZK, mas aqui os métodos são diferentes
grato
Respondendo minha própria pergunta, procurei na documentação do ireport e achei a solução pra mim:
quero salvar direto o arquivo, pois vou enviar o pdf direto por email
no meu projeto utilizei as seguintes libs:
commons-collections.jar
commons-digester-1.7.jar
commons-logging.jar
groovy.jar
itext.jar
jasperreports-3.7.4.jar
a propósito, esse tópico ja fez uns aniversários né :lol:
abraço pessoal
[quote=ondreia]Boas loganwlogan.
Como não deste mais pormenores vou supor que o teu relatorio é um simples relatório, sem ligação a bases de dados.
Então, no teu frame, chamas uma classe, por exemplo, que irá tratar do relatório.
//supondo que o teu ficheiro teste.jasper esteja dentro da tiua aplicação
URL arquivo = getClass().getResource("teste.jasper");
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(arquivo);
//aqui, como não vais passar parâmetros para dentro do relatório, e porque estou a assumir que não tenhas ligação com base de dados, os dois ultimos parametros são nulos
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,null);
//isto mostra.te o viewer, penso que é a melhor maneira, pois assim a pessoa escolhe o formato em que quer gravar, e o sitio onde gravar
JasperViewer jrviewer = new JasperViewer(jasperPrint, false);
jrviewer.setVisible(true);
Bem, não sei se era isto, senão manda mais pormenores.
Boa sorte ai
[/quote]
Muito boa resposta, porém segue um artigo para fazer isso mais orientado a objeto.