我正在尝试使用jasper-reports(没有iReport)从java代码生成报告。
已成功创建以下元素:
问题是,如何从 subReportElement 中引用 subReportDesign 对象?
到目前为止,我发现的唯一方法是将 subReportElement 的“表达式”字段设置为$P{REPORT_PARAMETERS_MAP}.get("subreportobject")
,并将 > subReport 加入 reportDesign 。
还有其他方法吗?例如,我可以在编译主报告之前以某种方式使用变量吗?
感谢, krisy
答案 0 :(得分:1)
如果子报表XML文件不在已知位置,则报表参数映射是唯一的方法。它确实需要我发现的临时文件,但这是在几年前。我做了类似的设置(JRXML在数据库中)。对于每个子报告,我必须在编译主报告之前执行此操作:
byte[] bytes = subreportXMLString.getBytes("UTF-8");
InputStream input = new ByteArrayInputStream(bytes);
File compiledReportFile = File.createTempFile(subreportParameterName, ".jasper");
FileOutputStream buffer = new FileOutputStream(compiledReportFile);
JasperCompileManager.compileReportToStream(input, buffer);
input.close();
buffer.close();
reportParameters.put(subreportParameterName, compiledReportFile);