如何计算jasper报告中的字符串列和

时间:2013-11-29 13:10:11

标签: java jasper-reports

我需要检索一个String列的总和,所以我写了这个:

<variable name="totalQt" class="java.lang.Integer" calculation="Sum">
    <variableExpression>
      <![CDATA[Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))]]>

     </variableExpression>
</variable>

但是我收到了这个错误:

....
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at   
 articleBonPreparation_1385730226859_237481.evaluateEstimated(articleBonPreparation_1385730226859_237481:428)

 at net.sf.jasperreports.engine.fill.JREvaluator.evaluateEstimated(JREvaluator.java:254)

所以有空字符串,所以如何在这种情况下使用零,我写了thiw但是这是错的 :

    <variableExpression>

      <![CDATA[$F{QTARTBP}.equals("") ? 0 : Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))]]>

    </variableExpression>

任何想法都将受到赞赏

2 个答案:

答案 0 :(得分:0)

查看您正在使用的输入数据会很有用,但尽管如此,如果$F{QTARTBP}的值是单个空格(" "),您的代码很明显会失败。您可以尝试使用以下表达式,它将在空字符串检查中包含单个空格,并将返回0

$F{QTARTBP}.replaceAll(" ", "").equals("") ? 0 : Integer.parseInt($F{QTARTBP}.replaceAll(" ", ""))

您应该知道,如果您的任何输入字符串无法解释为整数,那么这仍然会失败。

答案 1 :(得分:-2)

Jasper不计算 - 你应该在你的java代码中生成String。并计算你在java中需要的东西。

UPD。这个答案是不正确的。我更深入地学习了JR并理解它。