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

JasperReports子报表扩展

呼延骏俊
2023-03-14

我正在尝试用JasperReports创建一个XLS-Reports。为此,我使用了JasperReports 5.5.0(以及同一版本中的iReport)和apache POI3.9。

基结构是一个带有子报表的主报表,该子报表还包含另一个子报表。为了更好地理解一些代码示例:

<?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="report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ada06392-98fc-4512-99d3-a4008c86ed40">
<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.create.custom.palette" value="true"/>
<property name="net.sf.jasperreports.style.evaluation.time.enabled" value="true"/>
<property name="net.sf.jasperreports.export.xls.wrap.text" value="true"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="ireport.zoom" value="3.1384283767210035"/>
<property name="ireport.x" value="34"/>
<property name="ireport.y" value="0"/>
<parameter name="subreportDisLayer" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
<field name="nextLayerList" class="java.util.List"/>
<field name="field1" class="java.lang.String"/>
<field name="field2" class="java.lang.String"/>
<background>
    <band splitType="Stretch"/>
</background>
<columnHeader>
    <band height="42" splitType="Stretch"/>
</columnHeader>
<detail>
    <band height="13" splitType="Stretch">
        <subreport isUsingCache="true" runToBottom="true">
            <reportElement x="0" y="0" width="555" height="13" isPrintWhenDetailOverflows="true" uuid="222f19ef-c9f7-40a9-ae44-11ef6e15f1ad"/>
            <subreportParameter name="subsubreportLayer">
                <subreportParameterExpression><![CDATA[$P{subsubreportLayer}]]></subreportParameterExpression>
            </subreportParameter>
            <dataSourceExpression><![CDATA[new JRBeanCollectionDataSource($F{nextLayerList})]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{subreportLayer}]]></subreportExpression>
        </subreport>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement stretchType="RelativeToTallestObject" mode="Opaque" x="40" y="0" width="30" height="13" isPrintWhenDetailOverflows="true" uuid="ab260763-72ff-47ff-ad53-dfedde447908"/>
            <box>
                <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>
            <textElement>
                <font size="8"/>
                <paragraph leftIndent="2" tabStopWidth="4"/>
            </textElement>
            <textFieldExpression><![CDATA[$F{field1}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement stretchType="RelativeToTallestObject" mode="Opaque" x="70" y="0" width="50" height="13" isPrintWhenDetailOverflows="true" uuid="c408ac05-ee11-4e49-9609-179429b76e20"/>
            <box>
                <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>
            <textElement>
                <font size="8"/>
                <paragraph leftIndent="2" tabStopWidth="4"/>
            </textElement>
            <textFieldExpression><![CDATA[$F{field2}]]></textFieldExpression>
        </textField>
    </band>
</detail>
<?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="report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="ada06392-98fc-4512-99d3-a4008c86ed40">
<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.create.custom.palette" value="true"/>
<property name="net.sf.jasperreports.style.evaluation.time.enabled" value="true"/>
<property name="net.sf.jasperreports.export.xls.wrap.text" value="true"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="ireport.zoom" value="3.1384283767210035"/>
<property name="ireport.x" value="34"/>
<property name="ireport.y" value="0"/>
<parameter name="subsubreportLayer" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
<field name="nextLayerList" class="java.util.List"/>
<field name="field3" class="java.lang.String"/>
<background>
    <band splitType="Stretch"/>
</background>
<detail>
    <band height="13" splitType="Stretch">
        <subreport isUsingCache="true" >
            <reportElement x="0" y="0" width="555" height="13" isPrintWhenDetailOverflows="true" uuid="222f19ef-c9f7-40a9-ae44-11ef6e15f1ad"/>
            <dataSourceExpression><![CDATA[new JRBeanCollectionDataSource($F{nextLayerList})]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{subsubreportLayer}]]></subreportExpression>
        </subreport>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement stretchType="RelativeToBandHeight" mode="Opaque" x="274" y="0" width="100" height="13" isPrintWhenDetailOverflows="true" uuid="7fae7678-55c7-4308-9977-f71e215b38c9"/>
            <box>
                <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>
            <textElement>
                <font size="8"/>
                <paragraph leftIndent="2" tabStopWidth="4"/>
            </textElement>
            <textFieldExpression><![CDATA[$F{field3}]]></textFieldExpression>
        </textField>
    </band>
</detail>

我的问题是,如果母版的行高大于子报表的整个带高,子报表就不会将其带高延伸到母版的行高。我知道它必须只是一个简单的组合设置,但我找不到它。

共有1个答案

郝昊东
2023-03-14

不出所料,它是拉伸选项的简单组合...主报表的元素不能通过溢出扩展,但必须将属性net.sf.jasperReports.print.keep.full.text设置为true。第一个子报表遵循相同的规则,但第二个子报表的元素必须以溢出的方式伸展。

 类似资料:
  • 主要内容:JasperReports <subreport>元素子报表是 JasperReports 的一项不错的功能。此功能允许将一个报表合并到另一个报表中,即一个报表可以是另一个报表的子报表。子报表帮助我们保持报表设计简单,因为我们可以创建许多简单的报表并将它们封装到主报表中。子报告的编译和填充就像普通报告一样。当合并到另一个报告模板中时,任何报告模板都可以用作子报告,(报告模板的)内部没有任何更改。 子报表就像普通的报表模板。它们实际上是net.sf.j

  • 问题内容: 我试图找出为什么我的报告停止工作后我添加了一个报表给它。我已经确认并尝试过所有类似的问题在这里,这里和这里。没有成功。子报表肯定位于同一目录中。定义看起来像: $ P {SUBREPORT_DIR}在哪里 而且仍然出现错误: 为什么?? 问题答案: 在第一条消息中 在哪里 是目录,但不是文件名。这是第一个错误。 第二个:有时jasper找不到子报表,即使路径正确也是如此。 解决此问题的

  • 我有 2 个子报表,每个子报表包含将成为结果表的一列的信息。由于某些条目很长,我为两个子报表的行提供了相同的通用高度大小,该大小足以满足匆忙的效果,但现在它看起来很丑,所以他们希望我更改它。所以我想知道是否有办法协调两个子报表,以便给定条目中具有最高单元格的子报表指示所有行的宽度,并将该信息发送到另一个子报表以调整同一条目的大小,就像在一个子报表中的常规表上发生的那样。如果这是可能的,还是我必须使

  • 主要内容:1 JasperReports 报表表达式声明,2 JasperReports Calculator,3 JasperReports 条件表达式,4 JasperReports 报表条件表达式的示例1 JasperReports 报表表达式声明 报表表达式是 JasperReports 的强大功能,它允许我们在报表上显示计算数据。计算数据是指非静态数据且未专门作为报表参数或数据源字段传递的数据。报表表达式是通过组合报表参数、字段和静态数据而构建的。默认情况下,Java 语言用于编写报表

  • 主要内容:1 JasperReports 报表组Groups 介绍,2 JasperReports 报表组Groups 属性,3 JasperReports 报表组Groups 示例1 JasperReports 报表组Groups 介绍 JasperReports 中的报表组有助于以逻辑方式组织报告中的数据。一个报表组代表数据源中一系列连续的记录,它们有一些共同点,例如某个报表字段的值。报告组由 <group> 元素定义。一个报告可以有任意数量的组。声明后,可以在整个报告中提及团体。 报表组具

  • 主要内容:1 JasperReports 报表变量声明,2 JasperReports 内置报表变量,3 JasperReports 报表变量的示例1 JasperReports 报表变量声明 报表变量是建立在报表表达式之上的特殊对象。 报告变量简化了以下任务 : 报表表达式,在整个报表模板中大量使用。这些表达式只能使用报表变量声明一次。 报表变量可以根据计数、总和、平均值、最低、最高、方差等对应的表达式值进行各种计算。 如果在报表设计中定义了变量,则表达式中的新变量可以引用这些变量。因此,在报