计算JasperReports中列的总和,并根据该值计算

时间:2014-08-29 10:05:58

标签: jasper-reports

我有类似下面的数据,这些数据是通过 JasperReports 的查询获取的。

column1包含数据:

12,                  
21,                   
23,
321,
23

现在我想在第2列中显示每行值的百分比,例如第1行

(100 * 12) / sum of (column1)

应该对所有行进行。

我如何在 JasperReports 中执行此操作?

1 个答案:

答案 0 :(得分:1)

添加变量(例如v_sum)以获取列的总和(例如,EMPLOYEEID)。

<variable name="v_sum" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$F{EMPLOYEEID}]]></variableExpression>
</variable>

然后选择要获取%值的第2列的字段并选择属性: -

   Evaluation Time-     Auto

示例报告,您可以使用示例数据库(HSQLDB)运行: -

   <?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="report2" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="76072389-4335-4fd9-b45a-111b679776c9">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
    <![CDATA[select EMPLOYEEID from orders]]>
</queryString>
<field name="EMPLOYEEID" class="java.lang.Integer"/>
<variable name="v_sum" class="java.lang.Integer" calculation="Sum">
    <variableExpression><![CDATA[$F{EMPLOYEEID}]]></variableExpression>
</variable>
<columnHeader>
    <band height="28" splitType="Stretch">
        <staticText>
            <reportElement uuid="00bd99b4-690f-4eea-aebe-08b0cdcfcec2" x="15" y="6" width="100" height="20"/>
            <textElement/>
            <text><![CDATA[EmployeeID]]></text>
        </staticText>
        <staticText>
            <reportElement uuid="6396c710-73d9-407f-ba02-4aceb524cb75" x="172" y="6" width="100" height="20"/>
            <textElement/>
            <text><![CDATA[%]]></text>
        </staticText>
    </band>
</columnHeader>
<detail>
    <band height="20" splitType="Stretch">
        <textField>
            <reportElement uuid="dbbdb209-dbd4-4dbb-a454-32968c31ec79" x="14" y="0" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{EMPLOYEEID}]]></textFieldExpression>
        </textField>
        <textField evaluationTime="Auto">
            <reportElement uuid="f14e9e42-5486-4204-974c-c2c148ab73c7" x="172" y="0" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[(100*$F{EMPLOYEEID}) / $V{v_sum}]]></textFieldExpression>
        </textField>
    </band>
</detail>