Jasper 报告可以使用 .jrxml 文件中引用的外部模板和子报告,如下所示:
<template><![CDATA["repo:template.jrtx"]]></template>
<subreportExpression><![CDATA["repo:subreport.jrxml"]]></subreportExpression>
这在 Jasper 服务器上运行时非常有效,但是当从 Java 代码在进程内启动时,它会返回如下错误:
net.sf.jasperreports.engine.JRException:在 net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:255) 在 net.sf.jasperreports.repo.RepositoryUtil 中找不到资源:repo:template.jrxml。 getReport(RepositoryUtil.java:208) 在 net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:329)
在 Jasper 设计器中,资源被添加到未存储在报告文件中的资源列表中。我该如何做同样的事情RepositoryUtil
?即告诉RepositoryUtil
用一些真实位置替换“repo”?我使用的代码:
Connection conn = ... ;
String reportSource = "C:\\report.jrxml";
Map<String, Object> params = new HashMap<String, Object>();
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, conn);