如何删除JasperReports生成的excel报告中的空列

时间:2012-01-12 15:12:42

标签: java jasper-reports ireport export-to-excel

我正在使用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);

但空列仍然显示。有没有办法从报告中删除此空列。

2 个答案:

答案 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();