Pues no funcionó el reporte con Jasper, pude hacer que evitara paginar con estas opciones
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
// exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, byteArrayOutputStream);
try {
exporterXLS.exportReport();
} catch (JRException ex) {
Logger.getLogger(ReporteAction.class.getName()).log(Level.SEVERE, "No se pudo crear el excel", ex);
}
getResponse().setContentType("application/vnd.ms-excel");
getResponse().setContentLength(byteArrayOutputStream.toByteArray().length);
getResponse().setHeader("Content-disposition",
"attachment; filename=\"" + reportName + ".xls\"");
ServletOutputStream out;
try {
out = getResponse().getOutputStream();
out.write(byteArrayOutputStream.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
y con una archivo jasperreports.properties
#net.sf.jasperreports.query.executer.factory.sql=com.jaspersoft.jasperserver.api.engine.jasperreports.util.JRTimezoneJdbcQueryExecuterFactory
#limit the crosstab bucket/measure count to prevent out of memory errors
#net.sf.jasperreports.crosstab.bucket.measure.limit=100000
# suppress page headers and footers when exporting to XLS
net.sf.jasperreports.export.exclude.origin.band.1=pageHeader
net.sf.jasperreports.export.exclude.origin.band.2=pageFooter
# this gets rid of the repeating column headers and footers in excel exports
net.sf.jasperreports.export.xls.exclude.origin.band.1=columnHeader
net.sf.jasperreports.export.xls.exclude.origin.band.2=pageFooter
# keep the first column header on export
net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.1=columnHeader
# report exporter hints override export parameters
net.sf.jasperreports.export.parameters.override.report.hints=false
# use the workaround for the Sun JDK Glyph synchronization bug
net.sf.jasperreports.text.measurer.factory=net.sf.jasperreports.engine.util.JdkGlyphFixTextMeasurerFactory
# the fast/single line text measurer factory
net.sf.jasperreports.text.measurer.factory.single.line=com.jaspersoft.jasperserver.api.engine.jasperreports.util.SingleLineTextMeasurerFactory
# other excel options
#net.sf.jasperreports.export.xls.remove.empty.space.between.rows=true
#net.sf.jasperreports.export.xls.remove.empty.space.between.columns=true
#net.sf.jasperreports.export.xls.detect.cell.type=true
#net.sf.jasperreports.export.xls.create.custom.palette=true
Pero no me sirve de nada porque tengo un listado de 1500 y a partir del 600 se hace bolas y empieza poner campos donde no van, y a omitir otros, ademas algunos objetos como que su descripción no cabe y lo pasa a otro renglón, se ve bien, pero los datos no los voy a poder actualizar nuevamente de ahí, porque voy a tener campos sin id, y datos incompletos en el renglón... de plano no sirve... Ya sabía eso antes de empezar, pero realmente pensé que después de unos años, ya lo hubieran arreglado... pero bueno, voy a hacerlo con POI... seguramente tendré un mejor final, y más vale que me apure, pues todavía no preparo la demo de mañana.
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
// exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, byteArrayOutputStream);
try {
exporterXLS.exportReport();
} catch (JRException ex) {
Logger.getLogger(ReporteAction.class.getName()).log(Level.SEVERE, "No se pudo crear el excel", ex);
}
getResponse().setContentType("application/vnd.ms-excel");
getResponse().setContentLength(byteArrayOutputStream.toByteArray().length);
getResponse().setHeader("Content-disposition",
"attachment; filename=\"" + reportName + ".xls\"");
ServletOutputStream out;
try {
out = getResponse().getOutputStream();
out.write(byteArrayOutputStream.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
y con una archivo jasperreports.properties
#net.sf.jasperreports.query.executer.factory.sql=com.jaspersoft.jasperserver.api.engine.jasperreports.util.JRTimezoneJdbcQueryExecuterFactory
#limit the crosstab bucket/measure count to prevent out of memory errors
#net.sf.jasperreports.crosstab.bucket.measure.limit=100000
# suppress page headers and footers when exporting to XLS
net.sf.jasperreports.export.exclude.origin.band.1=pageHeader
net.sf.jasperreports.export.exclude.origin.band.2=pageFooter
# this gets rid of the repeating column headers and footers in excel exports
net.sf.jasperreports.export.xls.exclude.origin.band.1=columnHeader
net.sf.jasperreports.export.xls.exclude.origin.band.2=pageFooter
# keep the first column header on export
net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.1=columnHeader
# report exporter hints override export parameters
net.sf.jasperreports.export.parameters.override.report.hints=false
# use the workaround for the Sun JDK Glyph synchronization bug
net.sf.jasperreports.text.measurer.factory=net.sf.jasperreports.engine.util.JdkGlyphFixTextMeasurerFactory
# the fast/single line text measurer factory
net.sf.jasperreports.text.measurer.factory.single.line=com.jaspersoft.jasperserver.api.engine.jasperreports.util.SingleLineTextMeasurerFactory
# other excel options
#net.sf.jasperreports.export.xls.remove.empty.space.between.rows=true
#net.sf.jasperreports.export.xls.remove.empty.space.between.columns=true
#net.sf.jasperreports.export.xls.detect.cell.type=true
#net.sf.jasperreports.export.xls.create.custom.palette=true
Pero no me sirve de nada porque tengo un listado de 1500 y a partir del 600 se hace bolas y empieza poner campos donde no van, y a omitir otros, ademas algunos objetos como que su descripción no cabe y lo pasa a otro renglón, se ve bien, pero los datos no los voy a poder actualizar nuevamente de ahí, porque voy a tener campos sin id, y datos incompletos en el renglón... de plano no sirve... Ya sabía eso antes de empezar, pero realmente pensé que después de unos años, ya lo hubieran arreglado... pero bueno, voy a hacerlo con POI... seguramente tendré un mejor final, y más vale que me apure, pues todavía no preparo la demo de mañana.
Comentarios