基于动态参数的.xls工作簿模板是否可行?

时间:2015-10-22 08:51:07

标签: excel templates parameters jasper-reports xls

我是在我们的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}) - &gt ;我目前不知道如何做到这一点

这引出了我的问题:有没有办法将报告的属性指定为表达式,还是有其他方法可以解决我的要求?

解决方案应该是通用的,以便报表设计者可以在.jrxml文件中定义动态.xls模板,并且不需要修改Java代码。

1 个答案:

答案 0 :(得分:0)

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

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,检查报告中是否存在某个属性,请求网址,报告您所做的事情的名称,然后在逻辑集的基础上PROPERTY_WORKBOOK_TEMPLATE为选定的模板,然后填写报告。