如何在jasper报告中动态设置isIgnorePagination?

Har*_*nna 8 jasper-reports

我有一个jasper文件,我导出到PDF和Excel截至目前我只使用一个jasper我希望PDF导出报告应该是"isIgnorePagination =''true"而对于Excel报告应该是"isIgnorePagination ='false'"?

如何从java代码设置?

Jac*_*oen 5

如果要导出到Excel或PDF,则需要在运行时知道,这应该是您应该知道的.

举个例子:

public void generateReport(JasperPrint report, boolean isExcel, String saveTo){
  JRExporter exporter = null;
  if (isExcel) {
    exporter = new JRXlsExporter();
    exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
    exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
    exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
    //we set the one page per sheet parameter here
    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
  } else {
    exporter = new JRPdfExporter();     
  }
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);124
  exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, saveTo);
  export.exportReport();
}
Run Code Online (Sandbox Code Playgroud)


Ant*_* O. 5

根据JasperReports示例参考

出于各种目的isIgnorePagination,可以使用可选的内置参数在报告填充时覆盖此标记[ 在jrxml中] IS_IGNORE_PAGINATION

所以代码应该是这样的:

final Map<String, Object> fillingParameters = new HashMap<>();
if (exportType == ExportType.XLS) {
    fillingParameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
}
final JasperPrint print = JasperFillManager.fillReport(jasperReport, fillingParameters, dataSource);
Run Code Online (Sandbox Code Playgroud)