我正在使用iReport设计JasperReports。 Excel导出的报告包含额外的空列,我试着做
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
和
excelExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
但空列仍然显示。有没有办法从报告中删除此空列。
答案 0 :(得分:1)
这取决于确切的报告布局。如果您有不相邻的字段,那么该选项很棒。但是对于更复杂的布局,有时候列中的列大多是空白的。
最快的解决方案可能是更好地布局报告,以避免字段之间的任何空间。
答案 1 :(得分:0)
如果您使用的是POI,则无效。我使用JExcelApiExporter而不是JRXlsExporter来绕过它。
JExcelApiExporter打包在jxl jar中。在我的情况下jxl-2.6.10 for jasperreports 4.0.2
// Ejecucion de jasper report por ResultSet
ResultSet rs = rsvp.sql.MyConnection.getConnection().execQuery(m_query);
JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(rs);
// Parametros del reporte
m_param.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
JasperPrint print = JasperFillManager.fillReport(m_reportFileName, m_param, resultSetDataSource);
// Crea Excel Exporter
//JRExporter exporter = new JRXlsExporter(); // Este es de POI, no funciona bien
JRExporter exporter = new JExcelApiExporter();
// Configura el exporter
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_IGNORE_GRAPHICS, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
// Exporta a Excel
exporter.exportReport();