JasperReports + Java: Convertir report a distintos formatos.

Aquí les dejo una clase de ejemplo, para poder transformar un report, creado con JasperReports, en distintos formatos.(pdf, html, csv, xls,…)


import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;

public class Jasper {
    public Jasper() {
    }

    public static void main(String[] args) {
        Jasper jasper = new Jasper();
        Connection conn = null;

        //Cargamos el driver JDBC
            try {
              Class.forName("oracle.jdbc.driver.OracleDriver");
            }catch (ClassNotFoundException e) {
              System.out.println("JDBC Driver not found.");}
            try {
                String dburl = "jdbc:oracle:thin:@localhost:1521:XE";
                conn = DriverManager.getConnection(dburl,"user","pass");

            }catch (SQLException e){
              System.out.println("Error de conexión: " + e.getMessage());}

        JasperReport report;

        try {

            report = JasperCompileManager.compileReport("C:\\report.jrxml");

            JasperPrint print = JasperFillManager.fillReport(report, null, conn);

            //Exporta el informe a PDF
            String destFileNamePdf="C:\\trabajo\\reporte1.pdf";
            //Creación del PDF
            JasperExportManager.exportReportToPdfFile(print, destFileNamePdf);

            /*Otras importaciones

            //Exporta el informe a HTML
             JasperExportManager.exportReportToHtmlFile(print, destFileNamePdf);

            //Exporta el informe a excel

            OutputStream ouputStream= new FileOutputStream(new File("C:/trabajo/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();

            //Exporta el informe a csv

            String destFileNamePdf="C:\\trabajo\\reporte1.csv";
            JRCsvExporter exporter = new JRCsvExporter();
            File destFile = new File(destFileNamePdf);

            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
            destFile.toString());

            exporter.exportReport();

            //Exporta el informe a rtf

            OutputStream ouputStream= new FileOutputStream(new File("C:/trabajo/catalog.rtf"));
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

            JRRtfExporter exporter = new JRRtfExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);

            exporter.exportReport();

            ouputStream.write(byteArrayOutputStream.toByteArray());
            ouputStream.flush();
            ouputStream.close();

            */

        } catch (Exception e) {System.out.println("Error"+e);}

    }
}

21 pensamientos en “JasperReports + Java: Convertir report a distintos formatos.

  1. Hola amigo. En realidad lo que has colocado esta muy interesante y la exportacion a todos los formatos que has colocado funcionan correctamente. Muchas gracias me has ayudado bastante en un proyecto que estoy culminando
    Saludos
    Fernando

  2. Muy buenas, grande pa excelente aporte…
    Lastima que el exportar reportes a XLS no funcione bien.

    Todos los demás funcionan bien.

    En el caso del XLS el error que se da es este: Exception in thread “main” java.lang.NoSuchMethodError: HSSFSheet.addMergedRegion(Lorg/apache/poi/hssf/util/CellRangeAddress;)
    y sigue despues la traza del mismo.

    El problema es el Jar que contiene la clase HSSFSheet
    Yo logre encontrar este: poi-3.5-beta6-20090622.jar
    Navegando se encuentran muchas versiones de ese jar…
    Sinembargo ninguna tiene la actualizacion del metodo addMergerRegion en la clase HSSFSheet
    Tengo una version de junio del 2009.
    Si alguien tiene un jar mas nuevo, se les agradecería en demasía…

  3. Pingback: Integración de JasperReports en ADF. « Fetishcode…Thinking in objects

  4. Hola, espero me puedan ayudar estoy utilizando el formato csv pero no me esta respetando acentos ni caracteres especiales como ñ, quiero ver si me pueden ayudar o decir que es lo que me esta haciendo falta.
    Saludos

  5. Saludo, espero puedan ayudarme. quisiera saber donde y que arvhicos debo coloar para poder hacer estas importaciones:

    010 import net.sf.jasperreports.engine.JRExporterParameter;
    011 import net.sf.jasperreports.engine.JasperCompileManager;
    012 import net.sf.jasperreports.engine.JasperExportManager;
    013 import net.sf.jasperreports.engine.JasperFillManager;
    014 import net.sf.jasperreports.engine.JasperPrint;
    015 import net.sf.jasperreports.engine.JasperReport;
    016 import net.sf.jasperreports.engine.export.JRCsvExporter;
    017 import net.sf.jasperreports.engine.export.JRRtfExporter;
    018 import net.sf.jasperreports.engine.export.JRXlsExporter;
    019 import net.sf.jasperreports.engine.export.JRXlsExporterParameter;

  6. Juan Carlos los Archivos o librerías q ocupas están en el ZIP de JasperReports
    Lo puedes descargar de:
    http://sourceforge.net/projects/jasperreports/

    Para usar el Jasper básicamente ocupas estas librerías

    dist/jasperreports-X.jar
    lib/commons-*.jar (todos los que empiezan con “commons” – excepto tal vez commons-logging)

    Para exportar se usan el resto, dependiendo de lo que desees exportar deberes elegir uno u otro .jar
    por ejemplo:

    lib/itext-X.jar (para exportar a PDF)
    lib/poi-X.jar (para exportar a XLS)
    lib/jxl-X.jar (para exportar a XLS)

    Para compilar desde tu aplicación los *.jxml a *.jasper requieres de:

    lib/jdt-compiler-X.jar (para compilar los .jrxml a .jasper)

    etc.

    Para importarlos al proyecto dependerá del IDE q utilices

  7. hola nesesito ayuda tengo este codigo

    package reporte1;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import net.sf.jasperreports.engine.JRExporter;
    import net.sf.jasperreports.engine.JRExporterParameter;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.export.JRPdfExporter;
    import net.sf.jasperreports.engine.util.JRLoader;

    public class Main {

    public Main(){

    }

    public static void main(String[] args) throws Exception
    {
    String Driver = “org.postgresql.Driver”;
    String connectString = “jdbc:postgresql://localhost:5432/Farmacia”;
    String user = “postgres”;
    String password = “julio”;
    // try{

    Class.forName(Driver);
    Connection conexion = DriverManager.getConnection(connectString, user, password);
    JasperReport reporte = (JasperReport) JRLoader.loadObject(“report2.jasper”);
    //
    //JRExporter exporter = new JRPdfExporter();
    //exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
    //exporter.setParameter(JRExporterParameter.OUTPUT_FILE,new java.io.File(“reportePDF.pdf”));
    //exporter.exportReport();
    conexion.close();
    //}

    la conexxion si la realisa pero al momento de colocar esta sintaxis

    JRExporter exporter = new JRPdfExporter(); me marca error??? porke

  8. Juliodeathcore

    antes agregaste el jar Itext en el classpath del proyecto
    y ya hiciste el import
    import net.sf.jasperreports.engine.export.JRPdfExporter;
    ???

  9. Algunos formatos que olvidaste mencionar son los de OpenOffice (o LibreOffice) y MS Office 2007/2010

    // formatos nuevos (openOffice, libreOffice, MS Office 2007)
    import net.sf.jasperreports.engine.export.oasis.JROdsExporter;
    import net.sf.jasperreports.engine.export.oasis.JROdtExporter;
    import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
    import net.sf.jasperreports.engine.export.ooxml.JRPptxExporter;
    import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;

    por cierto, el de excel 2007 (XLSX) tiene sus ventajas y desventajas contra su predecesor (XLS)

    Si el reporte contiene imágenes, con XLS hace algo como un resize (muy malo) y se degrada la imagen, al contrario al exportar a XLSX la imagen se ve muy bien

    si exportas en XLS se puede usar JRXlsExporterParameter.SHEET_NAMES para indicar el nombre de las hojas, pero en XLSX esta opción no viene y pone en su lugar hoja1, hoja2, hojaN

    por lo menos esto es lo que he visto

  10. Alguien se ha preguntado porque cuando usas el jchoosefile y obtienes la url del archivo te salen con el slash inverso y no te lo acepta , cuando le pasas el parametro, al report = JasperCompileManager.compileReport(aqui”);…. no he encontrado alguna solucion si alguien tiene alguna sugerencia. gracias

  11. Pingback: Los números de 2010 « Fetishcode

  12. necesito estas librerias por fa ayuda con un link pa descargarlas porque en otros pos me han dado links rotos y las necesito de urgent

    import net.sf.jasperreports.engine.JRExporter;
    import net.sf.jasperreports.engine.JRExporterParameter;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.export.JRPdfExporter;

  13. me da el siguiente error
    Exception in thread “main” java.lang.NoClassDefFoundError: net/sf/jasperreports/
    engine/JRExporter
    Caused by: java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRExpor
    ter
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)

    Eso es cuendo ejecuto el .jar
    Tengo incluida la libreria jasperreport.jar 4.0

    Que me puede estar faltando.

    Gracias.

    Saludos.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s