这些栏目的净总额计算如下: - 20 40 0.5(即C的总和= A的总和/ B的总和)。如何使用java获取jasper报告中所需的总计算量。
为了计算列'C'的总和,我将计算枚举常量设置为calculationEnum.SYSTEM
。将表达式设置为
expression.setText("new Double($F{" +A + "/" +B +"}.doubleValue())");
,它显示相应的字段new Double($F{A/B}.doubleValue())
不存在。为了消除这种情况,我在字段列的列表中添加了该字段。但随后它显示相应字段的列不存在。
到目前为止我所做的是否正确?或者有没有更好的方法可以根据需要计算总数。
答案 0 :(得分:0)
字段A和B必须是class="java.lang.Number"
或其子类之一java.lang.Double
要获得它们的总和,表达式为:
$F{A}.doubleValue() + $F{B}.doubleValue()
要计算SUM($F{A}) / SUM($F{B})
,您需要使用两个变量
<variable name="sumOfA" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{A}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<variable name="sumOfB" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{B}]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
然后在textField
进行除法,请记住在evaluationTime="Report"
上设置textField
,以便在显示之前计算变量。
<textField evaluationTime="Report">
<reportElement x="208" y="17" width="100" height="20" uuid="414e6633-58c5-4081-a04b-fe3973f29d96"/>
<textFieldExpression><![CDATA[$V{A}.doubleValue()/$V{B}.doubleValue()]]></textFieldExpression>
</textField>
答案 1 :(得分:0)
创建两个变量,一个用于A的和,一个用于B的和。 然后使用以下表达式添加文本字段:
($V{sumOfA}/$V{sumOfB})