我有一个jasper文件,我导出到PDF和Excel截至目前我只使用一个jasper我希望PDF导出的报告应该是“isIgnorePagination =''true”而对于Excel报告应该是“isIgnorePagination ='false '“?
如何从java代码设置?
答案 0 :(得分: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();
}
答案 1 :(得分:3)
根据JasperReports sample reference:
出于各种目的,可以使用可选的内置
IS_IGNORE_PAGINATION
参数在报告填充时间覆盖此标记[jrxml中的{isIgnorePagination
]。
所以代码应该是这样的:
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);
答案 2 :(得分:0)
我找到了解决方案。
我的代码是:
paramaters.put("fromDate", fromDate);
paramaters.put("toDate", toDate);
if (!output.equals("pdf"))
{
paramaters.put("IS_IGNORE_PAGINATION", true);
}
else
paramaters.put("IS_IGNORE_PAGINATION", false);
JasperPrint jasperPrint = null;
jasperPrint = JasperFillManager.fillReport(CompiledReport,paramaters, connection);
if (output.equals("html")) {
generateHtmlResponse(response, jasperPrint);
} else if (output.equals("pdf")) {
generatePdfResponse(response, jasperPrint);
} else if(output.equals("excel")) {
generateXLResponse(response, jasperPrint);
}