有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在iReport中有许多独立的未分级数据集的java

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

我的问题是,我的子报表在顶层报表下分组,但我希望它们是独立的报表。现在看起来是这样的

顺序
订单行1
收据
收货行1
收货行2
发票
发票第1行
发票第2行
订单
订单行2
收据
收货行1

我希望它是一个电子表格中的3个独立报告。像这样

顺序
所有订单行
收据
所有收据行
发票
所有发票行

目前,我将订单作为主报告,收据和发票作为子报告,放入明细栏订单

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


共 (2) 个答案

  1. # 1 楼答案

    JasperReports 6.1.1 APIJRPdfExporterParameter.JASPER_PRINT_LISTJRPdfExporterParameter.OUTPUT_STREAM已弃用我添加到@Alex K回答当前未弃用的方法:

    “第一种方式。使用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));
    
  2. # 2 楼答案

    您可以填写和编译三个单独的报告,然后使用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();
    

    你可以看看这个sample for your JR version - 2.0.4来了解更多细节

    • 第二条路。使用多个数据集并列出组件

    您可以在iReport 4中添加多个数据集。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>
    

    报告的设计是:

    The report's design in iReport

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

    The report's result