使用JRParameter.IS_IGNORE_PAGINATION时如何设置Excel打印页边距

时间:2018-05-31 10:42:41

标签: java jasper-reports

使用JRParameter.IS_IGNORE_PAGINATION时如何设置Excel打印页边距?

我的Jasper-Report包含一个标题和一个包含许多行的表。它是使用设置JRParameter.IS_IGNORE_PAGINATION ...

创建的
    params.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
    return JasperFillManager.fillReport(inputStream, params, new JRBeanCollectionDataSource(myDtoList));

...然后通过JRXlsExporter导出。

结果就是我想要的 - 一张带有一个标题的Excel表格和一张没有任何边距或标题的表格。

但是在打印纸张时,纸张上没有边距。桌子从右上角开始。

在这种情况下如何设置打印边距?

编辑:在这种特殊情况下,Jasper似乎忽略了JasperPrint.setTopMarginJasperPrint.setBottomMargin的设置。

2 个答案:

答案 0 :(得分:0)

您需要了解,一旦导出报告,jasper服务器就不再能够控制导出的文件。理想情况下,您应该在调用导出之前尝试设置页边距。

您可以使用 setLeftMargin setRightMargin ,<{3>}对象(在编译之前)或JasperDesign对象上设置页边距em> setTopMargin , setBottomMargin 方法。

JasperPrint的代码示例:

JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, params, new JRBeanCollectionDataSource(myDtoList));
jasperPrint.setLeftMargin(20);
jasperPrint.setRightMargin(20);
jasperPrint.setTopMargin(20);
jasperPrint.setBottomMargin(20);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, stream);
exporter.exportReport();

答案 1 :(得分:0)

基于@shertage的评论,这里是解决方案:

SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
configuration.setPrintPageBottomMargin(20);
configuration.setPrintPageBottomMargin(20);

JRXlsExporter exporterXLS = new JRXlsExporter();
...
exporterXLS.setConfiguration(configuration);
exporterXLS.exportReport();

在这种特殊情况下,重点是使用SimpleXlsReportConfiguration.setPrintPageTopMargin,......而不是JasperPrint.setTopMargin,....