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

Sag*_*kam 27 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
Run Code Online (Sandbox Code Playgroud)

Ale*_*x K 65

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

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

<variable name="total" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$F{payment}]]></variableExpression>
</variable>
Run Code Online (Sandbox Code Playgroud)
  • 计算类型萨姆 ;
  • 复位类型报告 ;
  • 变量表达式$ F {}支付,其中$ F {}支付是一个字段的名称包含总和(医生付款).

工作实例.

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>
Run Code Online (Sandbox Code Playgroud)

结果将是:

通过iReport的预览生成报告


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


Mat*_*att 14

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

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

  2. 单击新变量

    一个.请注意右侧的属性

  3. 相应地重命名变量

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

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

  5. 选择正确的计算类型

  6. 更改表达式

    一个.单击小图标

    湾 选择要查找的列

    C.点击完成

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

  8. 将增量类型设置为none

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

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

  12. 双击新文本字段
  13. 清除表达"文本字段"
  14. 选择新变量

  15. 点击完成

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