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);}
}
}

hola
no me funciono amigo
ay un erro desconocido
bueno es todo
nos vemos en el futuro…!
julian velazquez zapata
Mayo 27, 2009 a 9:58 pm
si, mandenme sugerencias
julian velazquez zapata
Mayo 27, 2009 a 9:59 pm
Buenas Julian.
Si puedes especificar un poco mas el error.Sera de gran ayuda
fetishcode
Mayo 28, 2009 a 7:37 am
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
Fernando
Julio 5, 2009 a 12:04 am
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…
Jorge
Octubre 21, 2009 a 12:08 am
[...] Nota: No hemos mostrado como obtener la conexión, para ello pueden mirar el siguiente post. [...]
Integración de JasperReports en ADF. « Fetishcode…Thinking in objects
Noviembre 8, 2009 a 7:11 pm