首页 文章

如何汇总Jaspersoft iReport Designer中列中的所有值?

提问于
浏览
25

我在Jaspersoft iReport Designer中有类似的报告,但是无法弄清楚如何将垂直列“Doctor Payment”中的所有值加起来得到总计“1601”?该列的长度是可变的(即,行的数量根据数据库的大小及其更新频率而变化) .

是否有像 $V{COLUMN_COUNT} 这样的变量(实际上没有行,这里是5),它给出了列中所有值的总和?如果没有,怎么办 sum

Doctor ID   Doctor Payment
 A1             123
 B1             223
 C2             234
 D3             678
 D1             343
Total          1601

2 回答

  • 10

    解决您的任务非常容易 . 您应该创建并使用新变量来汇总 "Doctor Payment" 列的值 .

    在您的情况下,变量可以这样声明:

    <variable name="total" class="java.lang.Integer" calculation="Sum">
        <variableExpression><![CDATA[$F{payment}]]></variableExpression>
    </variable>
    
    • 计算类型为 Sum ;

    • 复位类型为 Report ;

    • 变量表达式为 $F ,其中 $F 是包含sum(Doctor Payment)的字段的名称 .

    工作实例 .

    CSV数据源:

    doctor_id,payment
    A1,123
    B1,223
    C2,234
    D3,678
    D1,343
    

    模板:

    <?xml version="1.0" encoding="UTF-8"?>
    <jasperReport ...>
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="doctor_id" class="java.lang.String"/>
        <field name="payment" class="java.lang.Integer"/>
        <variable name="total" class="java.lang.Integer" calculation="Sum">
            <variableExpression><![CDATA[$F{payment}]]></variableExpression>
        </variable>
        <columnHeader>
            <band height="20" splitType="Stretch">
                <staticText>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement textAlignment="Center" verticalAlignment="Middle">
                        <font size="10" isBold="true" isItalic="true"/>
                    </textElement>
                    <text><![CDATA[Doctor ID]]></text>
                </staticText>
                <staticText>
                    <reportElement x="100" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement textAlignment="Center" verticalAlignment="Middle">
                        <font size="10" isBold="true" isItalic="true"/>
                    </textElement>
                    <text><![CDATA[Doctor Payment]]></text>
                </staticText>
            </band>
        </columnHeader>
        <detail>
            <band height="20" splitType="Stretch">
                <textField>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{doctor_id}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement x="100" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{payment}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
        <summary>
            <band height="20">
                <staticText>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement>
                        <font isBold="true"/>
                    </textElement>
                    <text><![CDATA[Total]]></text>
                </staticText>
                <textField>
                    <reportElement x="100" y="0" width="100" height="20"/>
                    <box leftPadding="10"/>
                    <textElement>
                        <font isBold="true" isItalic="true"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$V{total}]]></textFieldExpression>
                </textField>
            </band>
        </summary>
    </jasperReport>
    

    结果将是:

    Generated report via iReport's preview


    你可以在JasperReports Ultimate Guide找到很多信息 .

  • 58

    iReports列的自定义字段(总和,平均值等)

    • 右键单击“变量”,然后单击“创建变量”

    • 单击新变量

    一个 . 请注意右侧的属性

    • 相应地重命名变量

    • 将值类名更改为正确的数据类型

    一个 . 您可以通过单击3个点进行搜索

    • 选择正确的计算类型

    • 更改表达式

    一个 . 单击小图标

    湾选择要查找的列

    C . 点击完成

    • 将初始值表达式设置为0

    • 将增量类型设置为none

    • 将增量器工厂类名称留空

    • 设置重置类型(通常是报告)

    • 将新文本字段拖到舞台上(通常在最后一页页脚或列页脚中)

    • 双击新文本字段

    • 清除表达“文本字段”

    • 选择新变量

    • 点击完成

    • 将新文本放在理想的位置

相关问题