jasper+ireport报表javabean交互总结

近期需求原因,接触到jasperReport,它页面布局与大多数报表软件类似,页眉页脚detail,不多做表述,简单记录一下从开始到完成遇到的问题和解决办法。

1:ireport分页。

ireport中有break控件,可在break中定义分页的依据。

第二种方法detail默认超出范围自动分页换行。

2:ireport报表页数。

报表中有函数$V{PAGE_NUMBER}可记录当前页数和总页数,可在属性中修改EvaluationTime修改now或者report来设置,缺点是遇到批量导出的复杂分页就不行了。

后我使用的页数的显示只能自己写算式,需要在后台传入各自报表的条目数和明细的行号,打个比方有AB两个报表需要批量导出,

每页显示4条明细,A有5条,B有9条。按照设计的结果应该是A分为2页,B分为3页,如果按照内部的函数自动分页会变成共5页,从1到5自动分页,显然是不满足需求的,我们需要在导入Bean之前给A和B加入各自条目数和行号,当前页的算式为

<![CDATA["第 "+ new Integer($F{行号}.intValue() % 4 == 0 ? $F{行号}.intValue() / 4 % 4 : $F{行号}.intValue() / 4 % 4 + 1) +" 页,共"]]>

总页数的算式为

<![CDATA[""+ new Integer($F{条目数}.intValue() % 4 == 0 ? $F{条目数}.intValue() / 4 : $F{条目数}.intValue() / 4 + 1) +" 页"]]>

此处传入的类型为BigDecimal,具体的类型做不同的转化,重要的是格式,由于API的不熟悉,格式的坑也是纠结了一些时间。

3:ireport自动补空行

这个功能比较棘手,根据交流,大家贯用sql补充的方法加入空行,所以暂时用注入空detail的bean去填充,页眉页脚等信息需要与数据行一致,这种方法有些弊端,如果开启了行数据溢出自动换行,在使用break分页,detail总高会超出预估的范围,如果是pdf的格式,会比预料中的长一些。如果是超出自动分页,由于超出的detail的范围,当前页会少于规定的行数,如果再加上补空行的数据整个分页会出现多了一些空白页。如果单单利用ireport去修改没有找到好的解决方案,目前只能是尽量放大可能会超长的字段宽度。如果是报表的话没有影响。

如果有更好的解决方案欢迎交流。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值