这章我们将处理一些我们在使用iReport和JasperReport过程中遇到的常见问题。他们是iReport论坛上常见的问题,但JasperReport官方文档也没有清楚的解决方案的。
打印百分比
经常需要在报表上显示一个字段的值和与这个值有关的百分比。考虑表16.1中的这几行。
香蕉 | 10 | 20% |
橘子 | 25 | 50% |
草莓 | 15 | 15% |
表格16.1
这个例子的百分比插入在C列,它表示B列中的值所占的百分数。用以下公式计算得出:
C =(ΣB*100) / B(1)
ΣB =所有B列的值的和
尽管这个公式看起来很容易就算出了百分比,但公式(1)不适合在JasperReports中计算。这是因为公式使用的值是无效的在公式被使用时;具体来说ΣB是获得报表最后的值,就是当所有的记录被处理以后。然而,你要使用的B的值仅仅在计算(1)记录结果时。这儿没有简单的方案为这个问题。唯一的计算总数的方式就需要最终的百分比(先前例子中的ΣB )。当你预先计算你需要的值,你可以将它作为参数传递给报表。公式(1)就将变为:
newDouble(($P{TOTAL_OF_B}.doublue()*100)/$F{B}.doublue())
TOTAL_OF_B代表包含你计算的值的参数