如何在 Jaspersoft iReport Designer 中对列中的所有值求和?

Posted

技术标签:

【中文标题】如何在 Jaspersoft iReport Designer 中对列中的所有值求和?【英文标题】:How to sum all values in a column in Jaspersoft iReport Designer? 【发布时间】:2012-11-13 02:00:29 【问题描述】:

我在 Jaspersoft iReport Designer 中有以下类似报告,但无法弄清楚如何将垂直列“医生付款”中存在的所有值相加以获得总计“1601”?此列的长度是可变的(即行数根据数据库的大小及其更新频率而变化)。

有没有像$VCOLUMN_COUNT这样的变量(实际上没有给出行数,这里是5), 哪个给出列中所有值的总和?如果没有,如何求和

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

【问题讨论】:

【参考方案1】:

解决您的任务很容易。您应该创建并使用一个新变量来对 “医生付款” 列的值求和。

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

<variable name="total" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$Fpayment]]></variableExpression>
</variable>
计算类型求和重置类型报告变量表达式$Fpayment,其中$Fpayment是包含sum(医生付款)。

工作示例。

CSV 数据源:

医生ID,付款 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[$Fpayment]]></variableExpression>
    </variable>
    <columnHeader>
        <band  splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0"  />
                <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"  />
                <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  splitType="Stretch">
            <textField>
                <reportElement x="0" y="0"  />
                <box leftPadding="10"/>
                <textElement/>
                <textFieldExpression><![CDATA[$Fdoctor_id]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="100" y="0"  />
                <box leftPadding="10"/>
                <textElement/>
                <textFieldExpression><![CDATA[$Fpayment]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <summary>
        <band >
            <staticText>
                <reportElement x="0" y="0"  />
                <box leftPadding="10"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Total]]></text>
            </staticText>
            <textField>
                <reportElement x="100" y="0"  />
                <box leftPadding="10"/>
                <textElement>
                    <font isBold="true" isItalic="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$Vtotal]]></textFieldExpression>
            </textField>
        </band>
    </summary>
</jasperReport>

结果将是:


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

【讨论】:

我有一些逻辑,但是在哪里放置新变量,我在开始时放置,即在声明了许多 name> 之后,但给出了找不到变量的错误:“total” @SagarNikam 你试过我的样品了吗? 是的,先生,您的示例可以正常工作,但是我切换到实时数据,使用 mysql 查询,它给出错误“未找到变量”,我在 结束后声明变量,应该我发送完整的文件 @SagarNikam 应该是个新问题 这是不正确的,因为您绑定的是字段而不是表列【参考方案2】:

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

    右键单击变量,然后单击创建变量

    点击新变量

    一个。注意右边的属性

    相应地重命名变量

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

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

    选择正确的计算类型

    更改表达式

    一个。点击小图标

    b.选择您要计算的列

    c。点击完成

    将初始值表达式设置为 0

    将增量类型设置为无

    将增量器工厂类名称留空

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

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

    双击新文本字段 清除“文本字段”表达式

    选择新变量

    点击完成

    将新文本放在合适的位置 

【讨论】:

以上是关于如何在 Jaspersoft iReport Designer 中对列中的所有值求和?的主要内容,如果未能解决你的问题,请参考以下文章

如何添加netbeans平台编译iReport源?

如何利用ireport实现打印条码标签

谁会用Jaspersoft Studio

iReport 5.6.0 安装包下载&安装

ireport5.6.0启动不了闪退解决(目前ireport只支持jdk1.7版本)

jasperreport ireport 怎么获取list<map<string,object>>数据