在iReport中有许多单独的 – 未完成的数据集

我正在使用iReport 2.0.4将一些数据从java应用程序导出到excel。

我的问题是我的子报告在顶级报告下进行分组,但我希望它们是离散报告。 目前它看起来像这样

订购
– 订单第1行

– 收到第1行
-Receipt Line 2
发票
– 发票第1行
– 发票第2行
订购
– 订单第2行

– 收到第1行
……..

我希望它在一个电子表格中成为3个单独的报告。 喜欢这个

订购
所有订单行

所有收据行
发票
所有发票行

目前,我将订单作为主报告,收据和发票作为子报告,放入详细信息带订单。

如果可能的话,获得此布局的最佳方式是什么?

  • 第一种方式。 使用JasperReports API

您可以填写并编译三个单独的报告,然后使用JRPdfExporterParameter.JASPER_PRINT_LIST参数来构建单个报告,使用如下代码:

JasperReport ordersReport = JasperCompileManager.compileReport(srcOrdersReport); JasperPrint jpOrdersReport = JasperFillManager.fillReport(ordersReport, ordersParamsMap, ordersDataSource); JasperReport receiptsReport = JasperCompileManager.compileReport(srcReceiptsReport); JasperPrint jpReceiptsReport = JasperFillManager.fillReport(receiptsReport, receiptsParamsMap, receiptsDataSource); JasperReport invoicesReport = JasperCompileManager.compileReport(srcInvoicesReport); JasperPrint jpInvoicesReport = JasperFillManager.fillReport(invoicesReport, invoicesParamsMap, invoicesDataSource); List printList = new ArrayList(); printList.add(jpOrdersReport); printList.add(receiptsReport); printList.add(invoicesReport); JRExporter exporter = new JRPdfExporter(); exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, printList); exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output); exporter.exportReport(); 

您可以查看此版本的JR版本 – 2.0.4以获取更多详细信息。

  • 第二种方式。 使用多个数据集和列表组件

您可以将iReport 4.x版本中的多个数据集添加到单个报告中。 每个数据集都可以包含自己的查询。 列表组件可以使用自己的数据集。

在这个示例中(使用iReport 4.5.1构建)我已经为Title band添加了3个列表组件:

                                   <band height="243" splitType="Stretch"> <componentelement> <reportelement positionType="Float" x="0" y="44" width="555" height="19"></reportelement> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical"> <datasetrun subDataset="OrdersDataset"> <connectionexpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionexpression> </datasetrun> <jr:listcontents height="19" width="555"> <textfield> <reportelement x="0" y="0" width="100" height="19"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{ORDERID}]]></textfieldexpression> </textfield> <textfield> <reportelement x="100" y="0" width="100" height="19"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{ORDERSHIPNAME}]]></textfieldexpression> </textfield> <textfield> <reportelement x="200" y="0" width="100" height="19"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{ORDERSHIPCOUNTY}]]></textfieldexpression> </textfield> <textfield> <reportelement x="300" y="0" width="100" height="19"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{ORDERSHIPCITY}]]></textfieldexpression> </textfield> </jr:listcontents> </jr:list> </componentelement> <componentelement> <reportelement positionType="Float" x="0" y="130" width="400" height="18"></reportelement> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical"> <datasetrun subDataset="ReceiptsDataset"> <connectionexpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionexpression> </datasetrun> <jr:listcontents height="18" width="400"> <textfield> <reportelement positionType="Float" x="100" y="0" width="100" height="18"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{RECEIPTCITY}]]></textfieldexpression> </textfield> <textfield> <reportelement positionType="Float" x="0" y="0" width="100" height="18"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{RECEIPTID}]]></textfieldexpression> </textfield> </jr:listcontents> </jr:list> </componentelement> <statictext> <reportelement positionType="Float" x="0" y="4" width="400" height="20"></reportelement> <box topPadding="1" leftPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isBold="true" isItalic="true"></font> </textelement> <text><![CDATA[Orders]]></text> </statictext> <statictext> <reportelement x="0" y="24" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[ID]]></text> </statictext> <statictext> <reportelement x="100" y="24" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[Customer name]]></text> </statictext> <statictext> <reportelement x="200" y="24" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[Customer country]]></text> </statictext> <statictext> <reportelement x="300" y="24" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[Customer city]]></text> </statictext> <statictext> <reportelement positionType="Float" x="0" y="109" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[ID]]></text> </statictext> <statictext> <reportelement positionType="Float" x="100" y="109" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[City]]></text> </statictext> <statictext> <reportelement positionType="Float" x="0" y="89" width="200" height="20"></reportelement> <box topPadding="1" leftPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isBold="true" isItalic="true"></font> </textelement> <text><![CDATA[Receipts]]></text> </statictext> <componentelement> <reportelement positionType="Float" x="0" y="201" width="400" height="18"></reportelement> <jr:list 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="InvoicesDataset"> <connectionexpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionexpression> </datasetrun> <jr:listcontents height="18" width="400"> <textfield pattern="###0.00;-###0.00"> <reportelement positionType="Float" x="100" y="0" width="100" height="18"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{INVOICESUM}]]></textfieldexpression> </textfield> <textfield> <reportelement positionType="Float" x="0" y="0" width="100" height="18"></reportelement> <box leftPadding="10" rightPadding="10"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement></textelement> <textfieldexpression><![CDATA[$F{INVOICEID}]]></textfieldexpression> </textfield> </jr:listcontents> </jr:list> </componentelement> <statictext> <reportelement positionType="Float" x="0" y="161" width="200" height="20"></reportelement> <box topPadding="1" leftPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isBold="true" isItalic="true"></font> </textelement> <text><![CDATA[Invoices]]></text> </statictext> <statictext> <reportelement positionType="Float" x="100" y="181" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[Sum]]></text> </statictext> <statictext> <reportelement positionType="Float" x="0" y="181" width="100" height="20"></reportelement> <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"> <toppen lineWidth="1.0"></toppen> <leftpen lineWidth="1.0"></leftpen> <bottompen lineWidth="1.0"></bottompen> <rightpen lineWidth="1.0"></rightpen> </box> <textelement textAlignment="Center"> <font isItalic="true"></font> </textelement> <text><![CDATA[ID]]></text> </statictext> </band>   

该报告的设计是:

该报告在iReport中的设计

结果将是(通过iReport预览):

报告的结果

在JasperReports 6.1.1 API中 , JRPdfExporterParameter.JASPER_PRINT_LISTJRPdfExporterParameter.OUTPUT_STREAM弃用我添加到JRPdfExporterParameter.OUTPUT_STREAM K回答当前未弃用的metod:

“第一种方式。使用JasperReports API”

替换(不推荐的代码):

 exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, printList); exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output); 

 exporter.setExporterInput(SimpleExporterInput.getInstance(printList)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(output));