如何将CSV数据源传递给subReport

时间:2013-09-25 19:13:17

标签: jasper-reports ireport

我需要你的帮助才能将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社区网站上几乎所有可用的解决方案,但没有任何方法可以帮助我。

1 个答案:

答案 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>