【发布时间】:2016-01-21 11:46:47
【问题描述】:
我是一个开发团队的一员,该团队在我们的 Java 应用程序中使用 JasperReports 来生成 .pdf 或 .xls 报告。目前我们正在尝试使用预定义的打印设置和宏来扩展我们的 .xls 报告。
我发现了报表属性net.sf.jasperreports.export.xls.workbook.template,其描述似乎与此要求完美匹配。在我们的例子中,现在的问题似乎是,这个属性不能基于表达式或输入参数来设置(或者我做错了吗?)。
我们的服务器端架构 (Java) 设计如下:我们有一个通用的 JasperReportController,它处理每个 .jasper/.jrxml 文件的准备和导出。报表填充有默认属性和参数,报表设计者可以在他们的报表中使用这些属性和参数。一些报告已经具有基于语言和客户的动态标题图像。这可以通过 JasperReports 强大的表达能力轻松实现。但这似乎不适用于(全局)报告属性。
我们需要什么:
- 报表设计者应该能够为每个报表定义一个工作簿模板:这个很简单,只需在报表上定义前面提到的属性
- 指定的模板应该是动态的,最好基于如下表达式(自定义函数):xlsTemplate('my-template.xls', $P{customer}, $P{language}) -> 我不知道如何暂时这样做
这引出了我的问题:有没有办法将报表的属性指定为表达式,或者是否有其他方法可以解决我的要求?
解决方案应该是通用的,以便报表设计者可以在 .jrxml 文件中定义动态 .xls 模板,而无需修改 Java 代码。
【问题讨论】:
-
我有点困惑“无法根据表达式或输入参数设置属性”,“报表设计器可以在 jrxml 中定义”,谁在设置它,如果在报表设计中只使用如果按参数查看我的答案,请注意“thePath”可以来自任何来源,甚至是碧玉报告参数?
标签: excel templates parameters jasper-reports xls