jasperreports 6.x 的说明文档洋洋洒洒 300 多页(英文),却没有找到 jasperreports 6.x 如何整合进系统的内容,也是醉咯。所以这里总结如下:
/**
* 导出为 HTML(字符串)
* @param params 参数映射关系
* @param reportTemplateName 报表名称(*.jasper 后缀)
* @return HTML 文件
*/
public String exportToHTML(Map<String, Object> params,
String reportTemplateName) {
if (params == null || params.isEmpty()) {
throw new IllegalArgumentException("params");
}
if (StringUtils.isBlank(reportTemplateName)) {
throw new IllegalArgumentException("reportTemplateName");
}
try {
Resource template = new ClassPathResource
(REPORT_TEMPLATE_PATH_PREFIX + reportTemplateName);
File html = File.createTempFile("temp", ".html");
HtmlExporter exporter = new HtmlExporter();
exporter.setExporterInput(new SimpleExporterInput(JasperFillManager.fillReport(template.getInputStream(), params,
connection)));
exporter.setExporterOutput(new SimpleHtmlExporterOutput(html));
exporter.exportReport();
return TextFile.read(html);
} catch (JRException e) {
logger.error("导出为 HTML", e);
} catch (IOException e) {
logger.error("导出为 HTML", e);
}
return null;
}
- params :是需要传入报表的参数映射关系;Key:参数名;Value:参数值。
- reportTemplateName:是 Jaspersoft Studio 6.x 编译后的文件,在 Jaspersoft Studio 的 Project Explorer 中即可看到:
- jasper:是编译后的文件。
- jrxml:是源文件。
源代码中的 REPORT_TEMPLATE_PATH_PREFIX 是报表模板的相对路径,记得要把报表设计文件放在 classPath 下哦O(∩_∩)O~
其中的 TextFile 类用于读取文件内容,详情 请参见。