使用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.setTopMargin
,JasperPrint.setBottomMargin
的设置。
答案 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
,....