Para poder integrar JasperReports a tu aplicacion debes añadir en tu proyecto algunas librerias de jasper, las mas basicas son:
- commons-digester-1.7.jar
- itext-1.3.1.jar
- jasperreports-3.0.0.jar
- jasperreports-extensions-1.3.1.jar
Esto se debe hacer en la siguiente direccion: WaveMaker\Projects\EnNombreDeTuProyecto\lib
Luego podras crear tu java service para poder interactuar tu jrxml diseñado en mi caso con IReport.
Aqui mi java service para poder ver las conexiones y mi reporte exportado en PDF.
public class ReportGenerator {
public void getReport(String urlReporte,int nro) throws Exception {
Connection conn = null;
String url = "jdbc:postgresql://localhost:5432/";
String dbName = "tester";
String driver = "org.postgresql.Driver";
String userName = "postgres";
String password = "123456";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
Map parameters = new HashMap();
String par=String.valueOf(nro);
parameters.put("cod_pedido",new String(par));
URL fileUrl = this.getClass().getResource(urlReporte+".jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(fileUrl.openStream());
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, conn);
JasperExportManager.exportReportToPdfFile(jasperPrint, "c:\\Documents and Settings\\usuario\\Mis documentos\\WaveMaker\\Projects\\ElNombreDeTuProyecto\\webapproot\\images\\"+urlReporte+".pdf");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch(Exception e) {
}
}
}
Lugo obvimente te creas un serviceVariable enlazando con el java service anterior
Aqui lo importante, direcciono el reporte en PDF en una carpeta del proyecto
JasperExportManager.exportReportToPdfFile(jasperPrint, "c:\\Documents and Settings\\usuario\\Mis documentos\\WaveMaker\\Projects\\ElNombreDeTuProyecto\\webapproot\\images\\"+urlReporte+".pdf");
Y luego puedo abrirlo con un evento por ejemplo pulsando un boton.
imprimirEntregaSuccess: function(inSender, inData) {
window.open("images/mi_reporte.pdf");
},
Eso es todo espero ver muchos proyectos con jasper.
23 comentarios:
Hola,
Pordrias, subir un punto zip de ejemplo con el proyecto, Seria de mucha utilidad, gracias!!!
ya encontre este http://dev.wavemaker.com/forums/files/JasperReports.zip
lo chevere es que funciona
wow yo apenas estoy usando la herramienta y si considero que es una gran cosa,
me gustaria que nos pudieras enseñar un manual PASO a PASO de lo que hay que hacer si no e smucha molestia, estoy tratando de desentrañar el ejemplo que dejo Elin3t pero no logro darle no se pq pero no me genera ningun reporte, me falta mover algo lo puse mal ni idea, modiique la direccion de la DB a una que tengo el mismo data grid y todo pero no consigo anda espero puedas ayudarme
gracias
Lo que sucede es que en la funcion que genera el reporte lo genera en c:/reporte.pdf, pero si no tienes todos abiertos (777) sobre la carpeta C: no se genera nada. lo ideal seria cambiar la direccion y crear una carpeta con todos los permisos (777) y hay si te funcionara,
Saludos
Elin perdona ayer cuando lo puse pues recien estaba aprendiendo a usarlo.
todo lo estoy desarrollando en mi pc. y sobre plataforma windows, asi que lo de los permisos no creo que sea.
ayer revisando el codigo del link que dejaste me di cuenta que lo que me faltaba era la base de datos y la configuracion con ella
en el codigo Java dentro del Wave Maker esta indicado un acceso a MySQL con user Root y password, algo que mi mysql no tiene pus no le eh definido un pass
luego apunta a una db no que no tengo creada, en fin ya hice eso, luego revise el JRXML y puestambien esta enlazada a una DB que no existe en mi motor, en pocas palabras era imposible que corra.
ahora estoy investigando como hacerlo
espero dar con ello pronto cuando lo haga hare un tutorial y lo pondre en el blog
aunque valoraria mucho tu ayuda en Java pues no conosco bien de programacion y menos de Java
Que bueno, aunque lo de los permisos si puede ser problema, por lo menos en windows vista,
respecto a lo de java, en lo que te pueda ayudar....
estare atento a hacerlo...
saludos
si estas en linea aun, quiza pudieras darme tu msn y podrdriamos charlar tengo un proyecto en desarrollo y estoy atorado la verdad necesito mucha ayuda ojala pudieras hacerlo
o agregame tu el_tercer_profeta@hotmail.com
mi msn es eliecerdaza7@hotmail.com o en gmail elin3t@gmail.com
saludos
Gracias por colaborar en la comunidad de WaveMaker...en este foro hay mas informacion de JasperReports integrado con WaveMaker.. en los proximos dias integrare con subreportes una aplicacion con WaveMaker...
hola
necesito ayuda estoy trabado, ya busuqe por todo lado pero no logro dar con nada, espero que me puedan ayudar, quiero generar reportes pero en XLS lamentablemente no logro dar con la forma ojala puedan ayudarme
thanks
encontré esta función tal vez te sirva. puedes agregarla al servicio java del ejemplo o crear un nuevo "java Service" y adaptarla, espero te sirva
/*
* Main.java
*
* Created on 17 de marzo de 2005, 8:56
*/
package reportload;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.*;
import net.sf.jasperreports.engine.util.*;
import net.sf.jasperreports.view.*;
import java.sql.*;
import java.io.*;
import java.util.*;
/**
*
* @author DestruKtor
*/
public class Main {
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
try
{
//Ruta de Archivo Jasper
String fileName="C:\\reports\\rep_cli.jasper";
//Ruta de archivo pdf de destino
String destFileNamePdf="C:\\reports\\rep_cli.pdf";
//Ruta de archivo xls de destino
String destFileNameXls="C:\\reports\\rep_cli.xls";
//Pasamos parametros al reporte Jasper.
Map parameters = new HashMap();
parameters.put("sql_query", new String("select * from clientes"));
//Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte).
JasperPrint jasperPrint=JasperFillManager.fillReport(fileName, parameters, getConnection());
//Creación del PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, destFileNamePdf);
//Creación del XLS
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFileNameXls);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
exporter.exportReport();
System.exit(0);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
/**Metodo para crear la conexion a DB*/
private static Connection getConnection() throws ClassNotFoundException, SQLException {
//Configuración de la conexión.
String driver = "org.postgresql.Driver";
String connectString = "jdbc:postgresql://192.168.1.7:5432/bdtest";
String user = "user";
String password = "123";
Class.forName(driver);
Connection conn = DriverManager.getConnection(connectString, user, password);
//Retornamos la conexión establecida.
return conn;
}
}
fuente: http://www.forosdelweb.com
La clave de todo esta en esto:
OutputStream ouputStream
= new FileOutputStream(new File("C:/JasperReports/catalog.xls"));
ByteArrayOutputStream byteArrayOutputStream
= new ByteArrayOutputStream();
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT,
print);
exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM,
byteArrayOutputStream);
exporterXLS.exportReport();
ouputStream.write(byteArrayOutputStream.toByteArray());
ouputStream.flush();
ouputStream.close();
no olvidarse de poner el jar jxl.jar para generar archivos excel
este fue el avance que consegui, sorry por demorar en postearlo pero lo termine a las 4:00 AM y luego me dormi, y ahora que suspendieron mis clases lo posteo aca
los dos links
el proyecto------> http://www.settiperu.net/Downloads/WaveMaker/JasperReports.zip
la DB MySQL -------------> http://www.settiperu.net/Downloads/WaveMaker/Jasperdata.sql
solo consegui crear el archivo XLS pero no logro rellenarlo, de todas formas al hacer click en el boton generar crea los archivos Game.pdf y game.xls en la direccion C:/
bueno pues nada no consegui llenarlo hasta ahora, algo se me ocurrira
por otro lado, Manuel espero no te moleste pero implemente un blog para la Comunidad, habe si te das una vuelta y te inscribes para que me heches una mano :D espero que te animes, la invitacion tambien se extiende a ti Eliecer
jajaja me olvide darles el link jajajajaja
http://comunidadwm.settiperu.net/index.php
ese es el link del Blog, y el del foro es
http://comunidadwm.settiperu.net/forum/
los espero
hola! alguien tiene el proyecto aun? los enlaces no funcionan..gracias!
hola que proyecto quieres asi te paso un link
nesecito una ayuda en wavemaker no logro hacer la conexion con el jasper por los parameters aun no logro encontrar como hacerlo porfa ayudenme.
Podrian ayudarme a crear la relacion de folio usuario.
hola adriana podrias explicar mas acerca de relacion de folio usuario.
Publicar un comentario