如何在 Jasper 报告中创建一个重复父元素值的 table
How to create a table with repeating the parent element values in Jasper report
我需要使用 Jasperstudio 6.2.12 使用 JSON 数据创建 table 并将其导出为 .xlsx 格式。我能够创建 table ,如下所示:
我的要求是根据E 和F 列中的行数迭代A、B、C 和D 列中的值。预期的输出是:
我用来打印 table 的 JSON 数据是:
{
"root": [{
"firstName": "John",
"lastName": "Doe",
"accounts": [{
"bank": "LLOYDS",
"accountNumber": 123456,
"references": [{
"name": "Eva Doe",
"refAccountNumber": 6549873
},
{
"name": "Robin Doe",
"refAccountNumber": 3216545
},
{
"name": "Peter Doe",
"refAccountNumber": 9876549
}
]
}]
},
{
"firstName": "James",
"lastName": "Doe",
"accounts": [{
"bank": "HSBC",
"accountNumber": 654321,
"references": [{
"name": "Sam Doe",
"refAccountNumber": 6549873
},
{
"name": "Roger Doe",
"refAccountNumber": 3216545
},
{
"name": "Jason Doe",
"refAccountNumber": 9876549
}
]
}]
}
]}
JRXML:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.13.0.final using JasperReports Library version 6.13.0-46ada4d1be8f3c5985fd0b6146f3ed44caed6f05 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="accounts" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="066cfa9f-bcf0-4095-8d82-a5ef1cb8632d">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<property name="net.sf.jasperreports.export.xls.one.page.per.sheet" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
<property name="net.sf.jasperreports.export.xls.white.page.background" value="false"/>
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
<property name="net.sf.jasperreports.export.xls.ignore.graphics" value="false"/>
<property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/>
<property name="net.sf.jasperreports.export.xls.sheet.names.all" value="Accounts"/>
<property name="net.sf.jasperreports.export.xls.freeze.row" value="1"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="net.sf.jasperreports.exports.xls.font.size.fix.enabled" value="false"/>
<property name="maximumRowsPerSheet" value="0"/>
<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="AccountsDataset" uuid="73085770-27bc-42cb-b4db-edc97074de2c">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="json">
<![CDATA[root.accounts]]>
</queryString>
<field name="bank" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="bank"/>
<fieldDescription><![CDATA[bank]]></fieldDescription>
</field>
<field name="accountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="accountNumber"/>
<fieldDescription><![CDATA[accountNumber]]></fieldDescription>
</field>
<field name="accoutType" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="accoutType"/>
<fieldDescription><![CDATA[accoutType]]></fieldDescription>
</field>
<field name="references" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="references"/>
<fieldDescription><![CDATA[references]]></fieldDescription>
</field>
</subDataset>
<subDataset name="ReferencesDataset" uuid="b23c5f84-b106-4d89-a5d4-6287aa8bbdf7">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="json">
<![CDATA[root.accounts.references]]>
</queryString>
<field name="name" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="name"/>
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<field name="refAccountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="refAccountNumber"/>
<fieldDescription><![CDATA[refAccountNumber]]></fieldDescription>
</field>
</subDataset>
<subDataset name="MainDataset" uuid="ab297ea1-81e6-4a6f-b90c-4ce1fb9521a2">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="json">
<![CDATA[root]]>
</queryString>
<field name="firstName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="firstName"/>
<fieldDescription><![CDATA[firstName]]></fieldDescription>
</field>
<field name="lastName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="lastName"/>
<fieldDescription><![CDATA[lastName]]></fieldDescription>
</field>
<field name="email" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="email"/>
<fieldDescription><![CDATA[email]]></fieldDescription>
</field>
<field name="accounts" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="accounts"/>
<fieldDescription><![CDATA[accounts]]></fieldDescription>
</field>
</subDataset>
<queryString language="json">
<![CDATA[]]>
</queryString>
<field name="root" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="root"/>
<fieldDescription><![CDATA[root]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="254" splitType="Stretch">
<componentElement>
<reportElement x="0" y="0" width="480" height="60" uuid="268fe625-e43f-48d5-90c7-f396d09cd88d">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="MainDataset" uuid="67830a07-2594-4532-ae34-96829b8046da">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("root")]]></dataSourceExpression>
</datasetRun>
<jr:column width="80" uuid="a8cf3aa0-1633-4f19-a908-6efbf55d2f75">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="b89609d4-5cbb-4f5b-b470-c9f9f4ad9d26"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[First Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ec954e2c-43e4-43ba-9005-03272b9daad5"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{firstName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="e7f5cfca-a803-485d-be01-5d2f785fbf0b">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="0a2eb2ed-75b9-46c3-8751-871c5473c3e1"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Last Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="767b9d15-53e5-4a0b-be8c-ec94fc6398f8"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="c7103510-df1d-4c31-a30f-9b726540dd7a">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="11192151-2c03-4590-91f7-87021b022301"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Bank]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="8b2678af-1b87-49e6-aca2-af0cec3d7a46"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="AccountsDataset" uuid="faa7fa1c-7169-48fb-aac2-7483a2477998">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="97ec29f7-36f2-4ecc-9f30-3049e0648e97"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{bank}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="5a4bb23a-7d61-486b-91f8-b5150cb85817">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column4"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="30680d44-df3b-484e-b059-399e0a21b304"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="d7780443-ba11-4d20-944d-4f8210a74506"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="AccountsDataset" uuid="2c245f1d-7a8f-46dc-85c3-737b5b0bc5a1">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ba6b13f3-770d-4a02-b3f0-5d4293393cd3"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{accountNumber}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="0720c554-a0af-4192-a669-38cea560a2e2">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column5"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="98adb234-9003-4704-85e4-295538f4273c"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="faf83492-91ac-4a39-9483-512d6555c3d3"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="ReferencesDataset" uuid="832a218b-199c-4055-9891-0afaf629bf50">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts.references")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="955502f3-afec-40aa-a8f8-b5e83d43bcbc"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="2aed257e-00f2-4594-a9ac-9b504262ee3e">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column6"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="be058bb0-b9f3-4b41-b074-c1f44350eb09"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="ed5f0c5e-8f14-4565-8159-b7528e035f3c"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="ReferencesDataset" uuid="2c2d0c12-930c-45c5-a3a1-f8228fc78d7f">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts.references")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="59563298-0f0f-4b62-b263-511abb945d1a"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{refAccountNumber}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
</jasperReport>
请帮我根据E列和F列的行数迭代A列、B列、C列和D列的值,得到预期的输出。非常感谢大家!
最简单的方法是使用一个子数据集,该子数据集包含 JSON 树所有级别的字段。为此,您必须切换到 JSONQL query executer,它允许您从数据源选择的父节点映射字段。
一旦您拥有单个数据集中的所有字段,就可以使用简单的 table 来显示它们。
报告看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.13.0.final using JasperReports Library version 6.13.0-46ada4d1be8f3c5985fd0b6146f3ed44caed6f05 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="accounts" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="066cfa9f-bcf0-4095-8d82-a5ef1cb8632d">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<property name="net.sf.jasperreports.export.xls.one.page.per.sheet" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
<property name="net.sf.jasperreports.export.xls.white.page.background" value="false"/>
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
<property name="net.sf.jasperreports.export.xls.ignore.graphics" value="false"/>
<property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/>
<property name="net.sf.jasperreports.export.xls.sheet.names.all" value="Accounts"/>
<property name="net.sf.jasperreports.export.xls.freeze.row" value="1"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="net.sf.jasperreports.exports.xls.font.size.fix.enabled" value="false"/>
<property name="maximumRowsPerSheet" value="0"/>
<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="ReferencesDataset" uuid="b23c5f84-b106-4d89-a5d4-6287aa8bbdf7">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="jsonql">
<![CDATA[root.accounts.references]]>
</queryString>
<field name="firstName" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^^^.firstName"/>
<fieldDescription><![CDATA[firstName]]></fieldDescription>
</field>
<field name="lastName" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^^^.lastName"/>
<fieldDescription><![CDATA[lastName]]></fieldDescription>
</field>
<field name="bank" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^.bank"/>
<fieldDescription><![CDATA[bank]]></fieldDescription>
</field>
<field name="accountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^.accountNumber"/>
<fieldDescription><![CDATA[accountNumber]]></fieldDescription>
</field>
<field name="name" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="name"/>
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<field name="refAccountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.jsonql.field.expression" value="refAccountNumber"/>
<fieldDescription><![CDATA[refAccountNumber]]></fieldDescription>
</field>
</subDataset>
<queryString language="jsonql">
<![CDATA[]]>
</queryString>
<field name="root" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="root"/>
<fieldDescription><![CDATA[root]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="254" splitType="Stretch">
<componentElement>
<reportElement x="0" y="0" width="480" height="60" uuid="268fe625-e43f-48d5-90c7-f396d09cd88d">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="ReferencesDataset" uuid="67830a07-2594-4532-ae34-96829b8046da">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonQLDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("root.accounts.references.*")]]></dataSourceExpression>
</datasetRun>
<jr:column width="80" uuid="a8cf3aa0-1633-4f19-a908-6efbf55d2f75">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="b89609d4-5cbb-4f5b-b470-c9f9f4ad9d26"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[First Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ec954e2c-43e4-43ba-9005-03272b9daad5"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{firstName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="e7f5cfca-a803-485d-be01-5d2f785fbf0b">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="0a2eb2ed-75b9-46c3-8751-871c5473c3e1"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Last Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="767b9d15-53e5-4a0b-be8c-ec94fc6398f8"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="c7103510-df1d-4c31-a30f-9b726540dd7a">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="11192151-2c03-4590-91f7-87021b022301"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Bank]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="97ec29f7-36f2-4ecc-9f30-3049e0648e97"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{bank}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="5a4bb23a-7d61-486b-91f8-b5150cb85817">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column4"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="30680d44-df3b-484e-b059-399e0a21b304"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ba6b13f3-770d-4a02-b3f0-5d4293393cd3"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{accountNumber}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="0720c554-a0af-4192-a669-38cea560a2e2">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column5"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="98adb234-9003-4704-85e4-295538f4273c"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="955502f3-afec-40aa-a8f8-b5e83d43bcbc"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="2aed257e-00f2-4594-a9ac-9b504262ee3e">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column6"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="be058bb0-b9f3-4b41-b074-c1f44350eb09"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="59563298-0f0f-4b62-b263-511abb945d1a"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{refAccountNumber}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
</jasperReport>
我需要使用 Jasperstudio 6.2.12 使用 JSON 数据创建 table 并将其导出为 .xlsx 格式。我能够创建 table ,如下所示:
我的要求是根据E 和F 列中的行数迭代A、B、C 和D 列中的值。预期的输出是:
我用来打印 table 的 JSON 数据是:
{
"root": [{
"firstName": "John",
"lastName": "Doe",
"accounts": [{
"bank": "LLOYDS",
"accountNumber": 123456,
"references": [{
"name": "Eva Doe",
"refAccountNumber": 6549873
},
{
"name": "Robin Doe",
"refAccountNumber": 3216545
},
{
"name": "Peter Doe",
"refAccountNumber": 9876549
}
]
}]
},
{
"firstName": "James",
"lastName": "Doe",
"accounts": [{
"bank": "HSBC",
"accountNumber": 654321,
"references": [{
"name": "Sam Doe",
"refAccountNumber": 6549873
},
{
"name": "Roger Doe",
"refAccountNumber": 3216545
},
{
"name": "Jason Doe",
"refAccountNumber": 9876549
}
]
}]
}
]}
JRXML:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.13.0.final using JasperReports Library version 6.13.0-46ada4d1be8f3c5985fd0b6146f3ed44caed6f05 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="accounts" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="066cfa9f-bcf0-4095-8d82-a5ef1cb8632d">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<property name="net.sf.jasperreports.export.xls.one.page.per.sheet" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
<property name="net.sf.jasperreports.export.xls.white.page.background" value="false"/>
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
<property name="net.sf.jasperreports.export.xls.ignore.graphics" value="false"/>
<property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/>
<property name="net.sf.jasperreports.export.xls.sheet.names.all" value="Accounts"/>
<property name="net.sf.jasperreports.export.xls.freeze.row" value="1"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="net.sf.jasperreports.exports.xls.font.size.fix.enabled" value="false"/>
<property name="maximumRowsPerSheet" value="0"/>
<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="AccountsDataset" uuid="73085770-27bc-42cb-b4db-edc97074de2c">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="json">
<![CDATA[root.accounts]]>
</queryString>
<field name="bank" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="bank"/>
<fieldDescription><![CDATA[bank]]></fieldDescription>
</field>
<field name="accountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="accountNumber"/>
<fieldDescription><![CDATA[accountNumber]]></fieldDescription>
</field>
<field name="accoutType" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="accoutType"/>
<fieldDescription><![CDATA[accoutType]]></fieldDescription>
</field>
<field name="references" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="references"/>
<fieldDescription><![CDATA[references]]></fieldDescription>
</field>
</subDataset>
<subDataset name="ReferencesDataset" uuid="b23c5f84-b106-4d89-a5d4-6287aa8bbdf7">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="json">
<![CDATA[root.accounts.references]]>
</queryString>
<field name="name" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="name"/>
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<field name="refAccountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.json.field.expression" value="refAccountNumber"/>
<fieldDescription><![CDATA[refAccountNumber]]></fieldDescription>
</field>
</subDataset>
<subDataset name="MainDataset" uuid="ab297ea1-81e6-4a6f-b90c-4ce1fb9521a2">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="json">
<![CDATA[root]]>
</queryString>
<field name="firstName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="firstName"/>
<fieldDescription><![CDATA[firstName]]></fieldDescription>
</field>
<field name="lastName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="lastName"/>
<fieldDescription><![CDATA[lastName]]></fieldDescription>
</field>
<field name="email" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="email"/>
<fieldDescription><![CDATA[email]]></fieldDescription>
</field>
<field name="accounts" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="accounts"/>
<fieldDescription><![CDATA[accounts]]></fieldDescription>
</field>
</subDataset>
<queryString language="json">
<![CDATA[]]>
</queryString>
<field name="root" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="root"/>
<fieldDescription><![CDATA[root]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="254" splitType="Stretch">
<componentElement>
<reportElement x="0" y="0" width="480" height="60" uuid="268fe625-e43f-48d5-90c7-f396d09cd88d">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="MainDataset" uuid="67830a07-2594-4532-ae34-96829b8046da">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("root")]]></dataSourceExpression>
</datasetRun>
<jr:column width="80" uuid="a8cf3aa0-1633-4f19-a908-6efbf55d2f75">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="b89609d4-5cbb-4f5b-b470-c9f9f4ad9d26"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[First Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ec954e2c-43e4-43ba-9005-03272b9daad5"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{firstName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="e7f5cfca-a803-485d-be01-5d2f785fbf0b">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="0a2eb2ed-75b9-46c3-8751-871c5473c3e1"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Last Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="767b9d15-53e5-4a0b-be8c-ec94fc6398f8"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="c7103510-df1d-4c31-a30f-9b726540dd7a">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="11192151-2c03-4590-91f7-87021b022301"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Bank]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="8b2678af-1b87-49e6-aca2-af0cec3d7a46"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="AccountsDataset" uuid="faa7fa1c-7169-48fb-aac2-7483a2477998">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="97ec29f7-36f2-4ecc-9f30-3049e0648e97"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{bank}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="5a4bb23a-7d61-486b-91f8-b5150cb85817">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column4"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="30680d44-df3b-484e-b059-399e0a21b304"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="d7780443-ba11-4d20-944d-4f8210a74506"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="AccountsDataset" uuid="2c245f1d-7a8f-46dc-85c3-737b5b0bc5a1">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ba6b13f3-770d-4a02-b3f0-5d4293393cd3"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{accountNumber}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="0720c554-a0af-4192-a669-38cea560a2e2">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column5"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="98adb234-9003-4704-85e4-295538f4273c"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="faf83492-91ac-4a39-9483-512d6555c3d3"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="ReferencesDataset" uuid="832a218b-199c-4055-9891-0afaf629bf50">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts.references")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="955502f3-afec-40aa-a8f8-b5e83d43bcbc"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="2aed257e-00f2-4594-a9ac-9b504262ee3e">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column6"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="be058bb0-b9f3-4b41-b074-c1f44350eb09"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<componentElement>
<reportElement x="0" y="0" width="80" height="30" uuid="ed5f0c5e-8f14-4565-8159-b7528e035f3c"/>
<jr:list printOrder="Vertical">
<datasetRun subDataset="ReferencesDataset" uuid="2c2d0c12-930c-45c5-a3a1-f8228fc78d7f">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("accounts.references")]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="30" width="80">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="59563298-0f0f-4b62-b263-511abb945d1a"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{refAccountNumber}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
</jasperReport>
请帮我根据E列和F列的行数迭代A列、B列、C列和D列的值,得到预期的输出。非常感谢大家!
最简单的方法是使用一个子数据集,该子数据集包含 JSON 树所有级别的字段。为此,您必须切换到 JSONQL query executer,它允许您从数据源选择的父节点映射字段。
一旦您拥有单个数据集中的所有字段,就可以使用简单的 table 来显示它们。
报告看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.13.0.final using JasperReports Library version 6.13.0-46ada4d1be8f3c5985fd0b6146f3ed44caed6f05 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="accounts" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="066cfa9f-bcf0-4095-8d82-a5ef1cb8632d">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<property name="net.sf.jasperreports.export.xls.one.page.per.sheet" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
<property name="net.sf.jasperreports.export.xls.white.page.background" value="false"/>
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
<property name="net.sf.jasperreports.export.xls.ignore.graphics" value="false"/>
<property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/>
<property name="net.sf.jasperreports.export.xls.sheet.names.all" value="Accounts"/>
<property name="net.sf.jasperreports.export.xls.freeze.row" value="1"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="net.sf.jasperreports.exports.xls.font.size.fix.enabled" value="false"/>
<property name="maximumRowsPerSheet" value="0"/>
<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="ReferencesDataset" uuid="b23c5f84-b106-4d89-a5d4-6287aa8bbdf7">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test"/>
<queryString language="jsonql">
<![CDATA[root.accounts.references]]>
</queryString>
<field name="firstName" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^^^.firstName"/>
<fieldDescription><![CDATA[firstName]]></fieldDescription>
</field>
<field name="lastName" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^^^.lastName"/>
<fieldDescription><![CDATA[lastName]]></fieldDescription>
</field>
<field name="bank" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^.bank"/>
<fieldDescription><![CDATA[bank]]></fieldDescription>
</field>
<field name="accountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.jsonql.field.expression" value="^^.accountNumber"/>
<fieldDescription><![CDATA[accountNumber]]></fieldDescription>
</field>
<field name="name" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="name"/>
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<field name="refAccountNumber" class="java.lang.Integer">
<property name="net.sf.jasperreports.jsonql.field.expression" value="refAccountNumber"/>
<fieldDescription><![CDATA[refAccountNumber]]></fieldDescription>
</field>
</subDataset>
<queryString language="jsonql">
<![CDATA[]]>
</queryString>
<field name="root" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="root"/>
<fieldDescription><![CDATA[root]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="254" splitType="Stretch">
<componentElement>
<reportElement x="0" y="0" width="480" height="60" uuid="268fe625-e43f-48d5-90c7-f396d09cd88d">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="ReferencesDataset" uuid="67830a07-2594-4532-ae34-96829b8046da">
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonQLDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("root.accounts.references.*")]]></dataSourceExpression>
</datasetRun>
<jr:column width="80" uuid="a8cf3aa0-1633-4f19-a908-6efbf55d2f75">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="b89609d4-5cbb-4f5b-b470-c9f9f4ad9d26"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[First Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ec954e2c-43e4-43ba-9005-03272b9daad5"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{firstName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="e7f5cfca-a803-485d-be01-5d2f785fbf0b">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="0a2eb2ed-75b9-46c3-8751-871c5473c3e1"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Last Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="767b9d15-53e5-4a0b-be8c-ec94fc6398f8"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="c7103510-df1d-4c31-a30f-9b726540dd7a">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="11192151-2c03-4590-91f7-87021b022301"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Bank]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="97ec29f7-36f2-4ecc-9f30-3049e0648e97"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{bank}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="5a4bb23a-7d61-486b-91f8-b5150cb85817">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column4"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="30680d44-df3b-484e-b059-399e0a21b304"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="ba6b13f3-770d-4a02-b3f0-5d4293393cd3"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{accountNumber}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="0720c554-a0af-4192-a669-38cea560a2e2">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column5"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="98adb234-9003-4704-85e4-295538f4273c"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="955502f3-afec-40aa-a8f8-b5e83d43bcbc"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="80" uuid="2aed257e-00f2-4594-a9ac-9b504262ee3e">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column6"/>
<jr:columnHeader style="Table_CH" height="30" rowSpan="1">
<property name="com.jaspersoft.studio.unit.width" value="px"/>
<staticText>
<reportElement x="0" y="0" width="80" height="30" uuid="be058bb0-b9f3-4b41-b074-c1f44350eb09"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Ref Account Number]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="80" height="30" uuid="59563298-0f0f-4b62-b263-511abb945d1a"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{refAccountNumber}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
</jasperReport>