我需要你的帮助才能将csv数据源传递给subReports。
我非常感谢您的建议或解决方案。
我正在使用 iReport 5.0专业版 我有一个非常复杂的报告,该报告从多个(大约10个)csv文件中获取数据。
我为报告的每个部分创建了子报告,并且每个子报告作为单独的报告正常工作。
但是当我尝试将所有子报表集成到主报表中时,我无法将数据源传递给subReports。
在主报告中,我创建了一个名为CSVDS的参数 net.sf.jasperreports.engine.data.JRCsvDataSource ,其默认值如下:
new net.sf.jasperreports.engine.data.JRCsvDataSource(new File("D:\\client\\data\\SR1.csv"))
并且为了确保CSVDS从SR1.CVS获得价值,我添加了一个带有以下表达式的文本框并返回true
$ P {CVSDS} .next() - 返回true - 表示从SR1.csv的数据中填充CSVDS
此外,我将$ P {CVSDS}作为数据源传递给subReport
<subreport>
<reportElement uuid="2f0d77ac-ce39-4487-8f31-0e15e03f5dfd" x="0" y="0" width="592" height="437"/>
<dataSourceExpression><![CDATA[$P{CSVDS}]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "P1.jasper"]]></subreportExpression>
</subreport>
但是subReports空白。
所以,总的来说,我想知道如何将csv数据源传递给subReports。
PS:我已经尝试了Stack溢出和Jasper社区网站上几乎所有可用的解决方案,但没有任何方法可以帮助我。
答案 0 :(得分:0)
您需要将数据源表达式转换为正确的类型:
<subreport>
<reportElement uuid="2f0d77ac-ce39-4487-8f31-0e15e03f5dfd" x="0" y="0" width="592" height="437"/>
<dataSourceExpression><![CDATA[(net.sf.jasperreports.engine.data.JRCsvDataSource)$P{CSVDS}]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "P1.jasper"]]></subreportExpression>
</subreport>