开发工具:iReport 4.0.1
在做EBS中的报表开发,客户舍弃BI Publisher,而使用Jasper Report,使用过程中进行小小总结。
1,Report Properties中的“Ignore pagination”可以控制不分页。
2,Pallet中的Break组件,可以控制表中多少行数据分页。
Type: Page break, Column break
Print When Expression: 用来控制何时打印Break组件,就是执行分页操作,可以填写:$F{PAGINATION_FLAG}.equals( "Y")。
3,使用Report Group的"Start on a new page"
Report Group根据Group Expression中定义的字段来确定那些行可以同组,值相同的组相同,如果本行与上一行不同,就分组,如果设置了"Start on a new page",同时分页。
下面的例子中,james一组,jack一组,jim和joe一组,jone一组。
0 | james | G0 |
1 | jack | G1 |
2 | jim | G2 |
3 | joe | G2 |
4 | jone | G1 |
如果要求每页10行,组内不足10行打印空白行,可以在数据库表中插入空白行来实现。
4,关于合计
定义了组后,可以进行分组计算,也可以做Report内的合计,组内合计的时候,variableExpression是必要的,组内计算依赖定义好的分组。
<variable name="quantitySumInGroup" class="java.lang.Integer" resetType="Group" resetGroup="positionNoGroup" calculation="Sum"> <variableExpression><![CDATA[$F{QUANTITY}]]></variableExpression> <initialValueExpression><![CDATA[0]]></initialValueExpression> </variable>
调整resetType为Report来合计所有行。
合计参考:http://asmitasapkota.blogspot.com/2009/06/calculating-sum-in-each-group-in