4

iReport 2.0.4 を使用して、一部のデータを Java アプリケーションから Excel にエクスポートしています。

私の問題は、サブレポートが最上位レポートの下にグループ化されていることですが、それらを個別のレポートにしたいのです。現在はこんな感じ

注文
- 注文   明細 1
    領収書
- 領収書       明細 1 - 領収書明細
       2
    請求書
- 請求書       明細 1 - 請求書明細
       2
注文
- 注文   明細 2
    領収書
- 領収書       明細 1
       ........

1 つのスプレッドシートに 3 つの個別のレポートを作成したいと考えています。このような


    すべての注文 注文 明細すべて    の領収書 領収
明細    すべての請求書 請求書明細行


現在、注文をマスター レポートとして、領収書と請求書をサブレポートとして、詳細バンドの注文にドロップしています。

可能であれば、このレイアウトを取得する最良の方法は何ですか?

4

2 に答える 2

8

3つの個別のレポートを入力してコンパイルし、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<JasperPrint> printList = new ArrayList<JasperPrint>();

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のこのサンプルを参照してください。

  • 2番目の方法。いくつかのデータセットとリストコンポーネントを使用する

iReport4.xバージョンの複数のデータセットを単一のレポートに追加できます。すべてのデータセットには、独自のクエリが含まれている場合があります。リストコンポーネントは、独自のデータセットを使用できます。

このサンプル(iReport 4.5.1でビルド)では、3つのリストコンポーネントをタイトルバンドに配置しました。

<?xml version="1.0" encoding="UTF-8"?>
<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="several_queries" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <subDataset name="OrdersDataset">
        <queryString>
            <![CDATA[SELECT TOP 5 ORDERID AS orderId, SHIPNAME AS orderShipName, SHIPCOUNTRY AS orderShipCounty, SHIPCITY  AS orderShipCity
FROM orders]]>
        </queryString>
        <field name="ORDERID" class="java.lang.Integer"/>
        <field name="ORDERSHIPNAME" class="java.lang.String"/>
        <field name="ORDERSHIPCOUNTY" class="java.lang.String"/>
        <field name="ORDERSHIPCITY" class="java.lang.String"/>
    </subDataset>
    <subDataset name="ReceiptsDataset">
        <queryString>
            <![CDATA[SELECT TOP 10 ID AS receiptId, CITY AS receiptCity FROM receipts]]>
        </queryString>
        <field name="RECEIPTID" class="java.lang.Integer"/>
        <field name="RECEIPTCITY" class="java.lang.String"/>
    </subDataset>
    <subDataset name="InvoicesDataset">
        <queryString>
            <![CDATA[SELECT TOP 7 ID AS invoiceId, TOTAL AS invoiceSum FROM invoices]]>
        </queryString>
        <field name="INVOICEID" class="java.lang.Integer"/>
        <field name="INVOICESUM" class="java.math.BigDecimal"/>
    </subDataset>
    <subDataset name="dataset1"/>
    <queryString>
        <![CDATA[SELECT 1 as t FROM dual WHERE 1=2]]>
    </queryString>
    <field name="t" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="243" splitType="Stretch">
            <componentElement>
                <reportElement positionType="Float" x="0" y="44" width="555" height="19"/>
                <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"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{ORDERID}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="100" y="0" width="100" height="19"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{ORDERSHIPNAME}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="200" y="0" width="100" height="19"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{ORDERSHIPCOUNTY}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement x="300" y="0" width="100" height="19"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{ORDERSHIPCITY}]]></textFieldExpression>
                        </textField>
                    </jr:listContents>
                </jr:list>
            </componentElement>
            <componentElement>
                <reportElement positionType="Float" x="0" y="130" width="400" height="18"/>
                <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"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{RECEIPTCITY}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement positionType="Float" x="0" y="0" width="100" height="18"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{RECEIPTID}]]></textFieldExpression>
                        </textField>
                    </jr:listContents>
                </jr:list>
            </componentElement>
            <staticText>
                <reportElement positionType="Float" x="0" y="4" width="400" height="20"/>
                <box topPadding="1" leftPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isBold="true" isItalic="true"/>
                </textElement>
                <text><![CDATA[Orders]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="24" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[ID]]></text>
            </staticText>
            <staticText>
                <reportElement x="100" y="24" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[Customer name]]></text>
            </staticText>
            <staticText>
                <reportElement x="200" y="24" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[Customer country]]></text>
            </staticText>
            <staticText>
                <reportElement x="300" y="24" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[Customer city]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="109" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[ID]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="100" y="109" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[City]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="89" width="200" height="20"/>
                <box topPadding="1" leftPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isBold="true" isItalic="true"/>
                </textElement>
                <text><![CDATA[Receipts]]></text>
            </staticText>
            <componentElement>
                <reportElement positionType="Float" x="0" y="201" width="400" height="18"/>
                <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"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{INVOICESUM}]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement positionType="Float" x="0" y="0" width="100" height="18"/>
                            <box leftPadding="10" rightPadding="10">
                                <topPen lineWidth="1.0"/>
                                <leftPen lineWidth="1.0"/>
                                <bottomPen lineWidth="1.0"/>
                                <rightPen lineWidth="1.0"/>
                            </box>
                            <textElement/>
                            <textFieldExpression><![CDATA[$F{INVOICEID}]]></textFieldExpression>
                        </textField>
                    </jr:listContents>
                </jr:list>
            </componentElement>
            <staticText>
                <reportElement positionType="Float" x="0" y="161" width="200" height="20"/>
                <box topPadding="1" leftPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isBold="true" isItalic="true"/>
                </textElement>
                <text><![CDATA[Invoices]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="100" y="181" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[Sum]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="0" y="181" width="100" height="20"/>
                <box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1">
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center">
                    <font isItalic="true"/>
                </textElement>
                <text><![CDATA[ID]]></text>
            </staticText>
        </band>
    </title>
</jasperReport>

レポートのデザインは次のとおりです。

iReportでのレポートのデザイン

結果は( iReportプレビュー経由で)次のようになります。

レポートの結果

于 2012-07-23T11:16:34.653 に答える
0

JasperReports 6.1.1 APIでは、非推奨JRPdfExporterParameter.JASPER_PRINT_LISTのメソッドを@Alex K に追加しますJRPdfExporterParameter.OUTPUT_STREAM

「まず方法。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));
于 2015-10-28T19:12:38.807 に答える