Guardar un reporte PDF creado en iReport no es tan diferente de solo visualizarlo en pantalla.
En este ejemplo se hace uso de una base de datos en MySQL llamado «db123» y una sola tabla «estudiantes«, con algunos registros ya creados claro 🙂
CREATE TABLE estudiante ( dni varchar(12) NOT NULL, nombre varchar(32) default NULL, email varchar(32) default NULL, celular varchar(12) default NULL, PRIMARY KEY (dni) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Se hacen uso de las librerías de Jassperreports en su versión 3.7.2 🙂 no estoy actualizado pero creo que en nuevas versiones no debe de cambiar mucho.
Para la conexión con la base de datos se requiere el driver JDBC mysql-connector-java en cualquiera de sus versiones.
No explicaremos como implementar estas librerías ni como crear el archivo *.jasper, ya existen varios post dedicados a la creación de reportes los cuales invito a visitar 🙂
Utilizando la herramienta de iReport se crea un reporte como cualquier otro, (Ver post sobre reportes ), en este ejemplo no tenemos parámetros de entrada, la consulta se reduce a:
SELECT * FROM estudiante
Y la distribución de controles puede ser cualquiera, por ejemplo un formato tabular:
Si queremos llamar este reporte desde java, utilizamos la función:
public void ver( String jasper ){ JasperReport jasperReport; JasperPrint jasperPrint; try{ URL in=this.getClass().getResource( "reporte.jasper" ); jasperReport=(JasperReport)JRLoader.loadObject(in); jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap() , this.getConexion() ); JasperViewer.viewReport(jasperPrint,false); }catch (JRException ex){ System.err.println( "Error iReport: " + ex.getMessage() ); } }
Ahora, si lo que queremos es guardar directamente en disco el reporte en formato PDF sin visualizarlo, entonces la función cambia a:
public void pdf(){ JasperReport jasperReport; JasperPrint jasperPrint; try { //se carga el reporte URL in=this.getClass().getResource( "reporte.jasper" ); jasperReport=(JasperReport)JRLoader.loadObject(in); //se procesa el archivo jasper jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), this.getConexion() ); //se crea el archivo PDF JasperExportManager.exportReportToPdfFile( jasperPrint, "E:/temporal/reporte.pdf"); } catch (JRException ex) { System.err.println( "Error iReport: " + ex.getMessage() ); } }
Como se puede ver, las instrucciones son similares, cambia al final donde se utiliza la funcion«exportReportToPdfFile» , donde se especifica la ruta donde salvar el archivo, en este ejemple, el disco E:/…
o.O nada más.
El proyecto del ejemplo en netbeans 6.9 AQUI.
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
¿Splash Screen? El splash screen o traducido al aspañol 😉 es una «Pantalla de bienvenida» que se muestra cuando se ejec...
AssertJ Swing es una biblioteca para Java que proporciona una interfaz fluida para la realización automatizada de prueba...
Los procedimientos almacenados no solo pueden retornar valores como números, cadenas, etc, sino también datos como los R...
En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic d...
En un post anterior se vio como llenar un JTree en donde se conocía de antemano que estructura iba a tener esta sin emba...
Java2d nos permite manipular imagenes y asi poder crear animaciones sencillas como muestra el siguiente video. Puedes de...
Los comentarios estan cerrados
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...
El post es muy util, ya que no todas las veces se quiere imprimir el archivo. Una pregunta es posible imprimir un reporte directamente sin ver su vista previa, como es lo habitual.
Gracias
Excelente, Diego yo lo mando asi:
public static void Reporte_Imprimir(){
try {
String master = System.getProperty(“user.dir”) + “\\src\\Reportes\\Reporte_ProdFac.jasper”;
System.out.println(“master” + master);
if (master == null) { JOptionPane.showMessageDialog(null,”No Encuentro El Archivo Del Reporte”); }
JasperReport masterReport = null;
try{
masterReport = (JasperReport) JRLoader.loadObject(master);
} catch (JRException e){ JOptionPane.showMessageDialog(null,”Error Al Cargando El Reporte: ” + e.getMessage()); }
//este es el parámetro, se pueden agregar más parámetros basta con poner mas parametro.put
Map parametro = new HashMap();
parametro.put(“IdCliente”,IdCliente);
parametro.put(“IdSubCliente”,IdSubCliente);
parametro.put(“Fecha01″,Fecha01);
parametro.put(“Fecha02″,Fecha02);
//se procesa el archivo jasper
JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport,parametro,Con_MySQL.Conn_MySQL);
//impresion de reporte
// TRUE: muestra la ventana de dialogo “preferencias de impresion”
JasperPrintManager.printReport(jasperPrint, false);
}catch (JRException ex) { System.err.println( “Error iReport: ” + ex.getMessage() ); }
}
pero = necesito guardarlo a excel en una direccion especifica y no doi como.
Responder
si lo que necesitas guardar el resultado de una consulta en excel, puedes utilizar POI o jExcelApi sin necesidad de utilizar jasper 🙂
Excelente, me podrías ayudar necesito exportar el resultado de Reporte a Excel por favor te lo agradecería mucho.
Una consulta… (talvez no sigo el hilo del post)
Como haria para un imprimir una imagen que tengo almacenado en una BBDD.
Es una aplicacion que busca direcciones de croquis, almaceno registro croquis(imagenes), con sus respectivos datos (ej: Nombre de la Persona que pertenece el croquis, etc).
creo que ya hice un post sobre impresión de imágenes en reportes :/ lo buscare para estar mas seguro
Hola Un saludo, he seguido todos tus post, sobre reportes me han parecido muy buenos, la verdad es un gran trabajo, el problema es q ahora yo tengo todos m is reportes en ireport creados, hice desde un estado financiero con ireports hasta graficas, tambien unos con parametros por mes etc. Se supone que termino toda mi aplicacion pero me pido que pase todo a otra pc entonvces ahi comienza el problema ya q me recone la ruta de la anterior maquina, ya cambie la ruta en el codigo del jasper, en el xml de jrxml, y nada sigue el problema,AYUDAME POR FAVOR,,,,,, 🙂 🙂
los archivos .jasper usan la ruta del jar en el que están empaquetados así como las librerías jasperreport, si estas usando imágenes en tus reportes, al insertar estas en tus archivos jxrml y compilarlas usan la ruta de la maquina en la que se compilaron, a menos que la PC de destino tenga la misma ruta de tus imágenes que la PC origen no tendrás problemas en ejecutar el reporte, sino, te toca agregar las imagenes a los reportes desde tu aplicación en java
Hola tengo un problema y desconozco cual es su error. Soy nuevo usando la librería. El error es el siguiente:
mar 29, 2015 8:57:09 PM net.sf.jasperreports.engine.component.ComponentsEnvironment findBundles
ADVERTENCIA: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components
Alguien me puede ayudar…
Y si quiero bloquear el pdf generado para que no pueda modificar el archivo o copiar el texto que contiene, es decir, que el usuario solo pueda ver el archivo e imprimirlo… ¿cómo hago eso?
Hola y como haría para guardarlo en Word?
buenas amigo. no he podido descargar el proyecto. es posible que actives los link.!
links activos
Gracias Mouse.
Gracias por ilustrarnos con este ejemplo. Saludos desde México.
Hola tengo una duda.. Comó podria resolver el tema de los fonts al exportar a pdf.