当前位置: 首页 > 知识库问答 >
问题:

Jasper 报告:如何在一页中打印多页

云宏儒
2023-03-14

我是Jasper报告的新手。我有一个包含2组的报告。根据查询,正在打印多页。

第一组高度 - 95分,第二组高度 - 144分

我希望这些多页打印在一页中(我希望一页中包含5页)。每页高度为239点。(即使页面内容小于239分,我希望将剩余部分保留为空白,并在239分后开始下一页)。我尝试创建一个报告,并将上述报告作为子报告,并设置主报告的高度为1195(239*5)点。尽管如此,这些都被打印在不同的页面上。

共有1个答案

景书
2023-03-14

我已经根据你的规格做了一个测试,看起来效果不错。我可以给你一些提示。

  1. 在主报表设计中,只要子报表元素的高度等于基础带,它就无关紧要。如果子报表元素较短,则差异将显示在结果中。
  2. 子报表的页面高度无关紧要,重要的是条带的总高度。
  3. 检查以确保尚未在您创建的小组中选择“在新主页开始”选项。这是最有可能的问题。

如果前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="MainReport1" language="groovy" pageWidth="595" pageHeight="1195" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["C:\\Users\\Bizz\\Documents\\JasperReports\\"]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[SELECT
     PRODUCT."ID" AS PRODUCT_ID,
     PRODUCT."NAME" AS PRODUCT_NAME,
     PRODUCT."COST" AS PRODUCT_COST
FROM
     "PUBLIC"."PRODUCT" PRODUCT]]>
    </queryString>
    <field name="PRODUCT_ID" class="java.lang.Integer"/>
    <field name="PRODUCT_NAME" class="java.lang.String"/>
    <field name="PRODUCT_COST" class="java.math.BigDecimal"/>
    <group name="Group1">
        <groupExpression><![CDATA[$F{PRODUCT_ID}]]></groupExpression>
        <groupHeader>
            <band height="50">
                <subreport>
                    <reportElement x="0" y="0" width="200" height="50"/>
                    <subreportParameter name="ProductID">
                        <subreportParameterExpression><![CDATA[$F{PRODUCT_ID}]]></subreportParameterExpression>
                    </subreportParameter>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "MainReport1_subreport2.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </groupHeader>
    </group>
    <group name="Group2">
        <groupExpression><![CDATA["2"]]></groupExpression>
        <groupHeader>
            <band height="50">
                <subreport>
                    <reportElement x="0" y="0" width="200" height="50"/>
                    <subreportParameter name="ProductID">
                        <subreportParameterExpression><![CDATA[$F{PRODUCT_ID}]]></subreportParameterExpression>
                    </subreportParameter>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "MainReport1_subreport1.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </groupHeader>
    </group>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band splitType="Stretch"/>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>

子报告1:

<?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="MainReport1_subreport1" language="groovy" pageWidth="555" pageHeight="95" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="ProductID" class="java.lang.Integer"/>
    <queryString>
        <![CDATA[SELECT
     PRODUCT."ID" AS PRODUCT_ID,
     PRODUCT."NAME" AS PRODUCT_NAME,
     PRODUCT."COST" AS PRODUCT_COST
FROM
     "PUBLIC"."PRODUCT" PRODUCT
where
  product_id = $P{ProductID}]]>
    </queryString>
    <field name="PRODUCT_ID" class="java.lang.Integer"/>
    <field name="PRODUCT_NAME" class="java.lang.String"/>
    <field name="PRODUCT_COST" class="java.math.BigDecimal"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="95" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_ID]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_ID}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="20" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_NAME]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="20" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_NAME}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="40" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_COST]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="40" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_COST}]]></textFieldExpression>
            </textField>
            <componentElement>
                <reportElement x="0" y="60" width="200" height="35"/>
                <jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="3of9" drawText="false" checksumRequired="false">
                    <jr:codeExpression><![CDATA[$F{PRODUCT_ID}]]></jr:codeExpression>
                </jr:barbecue>
            </componentElement>
        </band>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>

子报告2:

<?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="MainReport1_subreport2" language="groovy" pageWidth="555" pageHeight="888" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="ProductID" class="java.lang.Integer"/>
    <queryString>
        <![CDATA[SELECT
     PRODUCT."ID" AS PRODUCT_ID,
     PRODUCT."NAME" AS PRODUCT_NAME,
     PRODUCT."COST" AS PRODUCT_COST
FROM
     "PUBLIC"."PRODUCT" PRODUCT
where
  product_id = $P{ProductID}]]>
    </queryString>
    <field name="PRODUCT_ID" class="java.lang.Integer"/>
    <field name="PRODUCT_NAME" class="java.lang.String"/>
    <field name="PRODUCT_COST" class="java.math.BigDecimal"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="144" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_ID]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_ID}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="20" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_NAME]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="20" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_NAME}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="40" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PRODUCT_COST]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="40" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{PRODUCT_COST}]]></textFieldExpression>
            </textField>
            <componentElement>
                <reportElement x="0" y="60" width="302" height="84"/>
                <jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="3of9" drawText="false" checksumRequired="false">
                    <jr:codeExpression><![CDATA[$F{PRODUCT_ID}]]></jr:codeExpression>
                </jr:barbecue>
            </componentElement>
        </band>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>
 类似资料:
  • 问题内容: 我只想在不选择用户的情况下打印JasperReport。我进行了搜索,但是没有有效的解决方案。这是我的代码的相关部分: 我想选择一台打印机,而不是简单的printReport。有什么办法吗? 问题答案: 这是应该的样子:

  • 如何在jasper子报告中显示当前页码?我只做了第一页,变量如下:$V{page_NUMBER}和“(”$V{page_COUNT}“)”,但我们如何在所有子报告中显示?

  • 我需要在数据源的每个记录后强制分页。我尝试了,但不起作用。怎么做?

  • 我正在使用jasperreport-4.5.0生成报告。它正在正确地生成报告。但是如果我的数据库中有大量数据,那么报告vl会显示在不同的页面中。所以我的要求是,如果我的报告有12页,那么我想显示12页中的第1页,12页中的第2页,12页中的第3页……就像我的页眉带一样。我怎么能做到这一点,任何人都可以对此提出一个想法。

  • 我的应用程序中有几个类似的报告,因此我创建了一个基本结构,在标题中有一个子报告,在页脚中有另一个子报告。 我不知道为什么我找不到解决这个问题的方法,如果有人能帮我...谢谢!