使用JasperXlsxExporterBuilder在工作表中进行不同的列分割

时间:2015-12-04 08:08:31

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

我有两个子报表,它们位于单独的工作表中。问题是,第二个工作表中的列分割与第一个工作表中的列相同,因此存在一些合并的单元格。对于合并的单元格,您无法对列进行排序("此操作要求合并的单元格具有相同的大小和#34;)。

我如何强制执行列的新样式/细分?

这些是导出器的设置:

reportBuilder.title(cmp.subreport(criteriaReportBuilder), cmp.subreport(secondReportBuilder));
JasperXlsxExporterBuilder xlsxExporter = DynamicReports.export.xlsxExporter(outputStream);
        xlsxExporter.setCollapseRowSpan(false);
        xlsxExporter.setRemoveEmptySpaceBetweenColumns(true);
        xlsxExporter.setRemoveEmptySpaceBetweenRows(false);
        xlsxExporter.setDetectCellType(true);
        xlsxExporter.setWhitePageBackground(false);
        xlsxExporter.setIgnoreGraphics(false);
        xlsxExporter.setOnePagePerSheet(false);

        reportBuilder.toXlsx(xlsxExporter);

第二次报告的输出(cmp.subreport(secondReportBuilder)) Output from second report 我希望,只有两列(A-B)而不是A-G。

1 个答案:

答案 0 :(得分:1)

将评论转换为答案:

DynamicJasper生成多个 JRXlsExporter,然后使用标准JRXlsExporter exporter = new JRXlsExporter(); List<JasperPrint> sheets = new ArrayList<JasperPrint>(); sheets.add(criteriaReportBuilder.toJasperPrint()); sheets.add(reportBuilder.toJasperPrint()); exporter.setExporterInput(SimpleExporterInput.getInstance(sheets)); ...

<?php
if( isset( $_GET["caller"] ) && $_GET["caller"] == "somevalue" ) {
    // I'm using Location because this will remove the get value
    header( "Location: index.php" );
    exit;
}
?>
<a href="index.php">just go to index</a><br/>
<a href="index.php?caller=somevalue">got to index and refresh?</a>