2013-09-25 41 views
3

我需要您的帮助,将csv数据源传递给子报告。如何将CSV数据源传递给子报告

我将非常感谢您的建议或解决方案。我正在使用iReport 5.0专业版
我有一个非常复杂的报告,该报告从多个(大约10个)csv文件中获取数据。

我已经为报告的每个部分创建了子报告,并且每个子报告都作为一个单独的报告正常工作。

但是,当我尝试将所有的子报表集成到一个主报表,然后我无法将数据源传递给子报表。

在主报告中,我创建了一个名为CSVDS 型net.sf.jasperreports.engine.data.JRCsvDataSource用默认值参数如下: new net.sf.jasperreports.engine.data.JRCsvDataSource(new File("D:\\client\\data\\SR1.csv")) ,为了确保CSVDS越来越值从SR1.CVS,我添加了一个与textbod以下表达式和它返回真

$ P {CVSDS}的.next() - 返回true,可呈现意味着CSVDS被从数据填充从SR1.csv

此外,我将$ P {CVSDS}作为数据源传递给子报告

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

但子报表即将空白。

因此,总体而言,我想知道如何将csv数据源传递给子报表。 PS:我已经尝试了几乎所有堆栈溢出和Jasper社区站点上的解决方案,但没有任何工作适合我。

回答

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> 
相关问题