【问题标题】:Is .xls workbook template based on dynamic parameters possible?基于动态参数的 .xls 工作簿模板是否可行?
【发布时间】: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


【解决方案1】:

在填写报告之前试试这个:

String thePath = "... get it from where you like also the jasper report see property map below...."
JRPropertiesMap properties = jasperReport.getPropertiesMap();
properties.put(XlsExporterConfiguration.PROPERTY_WORKBOOK_TEMPLATE,thePath);

结论你编辑你的通用JasperController,检查报告中是否有某个属性,请求url,你喜欢的报告名称,然后根据你的逻辑将PROPERTY_WORKBOOK_TEMPLATE设置为选定的模板,然后填写报告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2020-07-03
    相关资源
    最近更新 更多