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

时间:2012-11-25 11:16:19

标签: jasper-reports ireport

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

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

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

2 个答案:

答案 0 :(得分:61)

解决您的任务非常容易。您应该创建并使用新变量来汇总“医生付款”列的值。

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

<variable name="total" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$F{payment}]]></variableExpression>
</variable>
  • 计算类型 Sum ;
  • 重置类型报告;
  • 变量表达式 $ F {payment} ,其中 $ F {payment} 是包含总和的字段名称(< em>医生付款)。

工作示例。

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找到很多信息。

答案 1 :(得分:11)

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

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

  2. 点击新变量

    一个。请注意右侧的属性

  3. 相应地重命名变量

  4. 将值类名称更改为正确的数据类型

    一个。您可以点击3点

  5. 进行搜索
  6. 选择正确的计算类型

  7. 更改表达式

    一个。单击小图标

    湾选择要查看的列

    ℃。点击完成

  8. 将初始值表达式设置为0

  9. 将增量类型设置为无

  10. 将增量工厂类名称留空
  11. 设置重置类型(通常是报告)

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

  13. 双击新文本字段
  14. 清除表达“文字字段”
  15. 选择新变量

  16. 点击完成

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