JasperReports的 - 如何让JSON来填充报表(Jasperreports - how

2019-07-20 02:45发布

我想获得一个表中使用碧玉/ iReport的我的主要报告相同的数据来填充。 我怎样才能获得JSON来结转?

在编辑表格数据源我已经试过:

((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE})

new ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE})

$P{REPORT_DATA_SOURCE}

$P{REPORT_CONNECTION}

所有这些编译,但其中没有实际生成的表。 有任何想法吗? 有喜欢cloneDataSource()的JSON没有方法,这样有什么选择?

我的最终目标很简单:在JSON数据传递,并用它来生成一个图表,然后有显示相同信息的表格。 我已经工作了几天此,碧玉是给我一个困难时期。 请帮忙!

Answer 1:

我是用子报表时有类似问题所困扰。 看来,JSON数据源得到由主报告消耗,所以你需要调用subDataSource()得到一个新的数据源为您的子报表,也许对表,太-还没有测试过尚未虽然...

数据源表达式: ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()



Answer 2:

如果有人使用JasperReports的新的读书报告功能(版本6+可用),并要使用一个JsonDataSource ,这是通过JSON有效载荷的子报表的方式:

<p:subreportPart xmlns:p="http://jasperreports.sourceforge.net/jasperreports/parts" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/parts http://jasperreports.sourceforge.net/xsd/parts.xsd">
  <subreportParameter name="REPORT_DATA_SOURCE">
    <subreportParameterExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></subreportParameterExpression>
  </subreportParameter>
  <subreportExpression><![CDATA["PROFILES_cover.jasper"]]></subreportExpression>
</p:subreportPart>

你也可以通过提供节点位置作为一个参数传递的JSON有效载荷的子集subDataSource(java.lang.String selectExpression)方法。 例子:

.subDataSource("Northwind.Customers")

要么

.subDataSource("Northwind.Customers(Country == USA)")


Answer 3:

只需添加数据源表达你的主要报告:

<subreport>
    <reportElement x="-6" y="0" width="570" height="59" uuid="ac54a12b-8022-49a1-bc90-90cff664e3a1" />
    <dataSourceExpression>
        <![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("footer")]]>
    </dataSourceExpression>
    <subreportExpression>
        <![CDATA["footer.jrxml"]]>
    </subreportExpression>
</subreport>

它为我工作。 希望这将有助于。



文章来源: Jasperreports - how to get JSON to populate a subreport