ireport细节教程

序:写给第一次做报表的攻城狮,如果开发报表,可以少走一些弯路(都是一些特别特别小的问题,但确实特别影响用户体验)

1、 所有涉及到显示中文的内容,如果中文显示空白,那么需要设置字体编码和字体类型,设置成如下图所示:
ireport细节教程_第1张图片
还有一种可能,就是该字段在ireport中设置的宽度不够,而这个地方也没有勾上,那么可能也是空白的
ireport细节教程_第2张图片
2、 打印日期可以直接用new Date();
在这里插入图片描述
3、 如果ireport报错:waring : Element bottom reaches outside band area…,那么说明你的某个元素压线了,元素不可以跨栏(band)的。
4、 如果你的报表在预览的时候,总是横七竖八的,那么一定是你的Detail中的哪些字段没有对齐。Ctrl+鼠标滚轮,放大放大再放大,一点一点将字段对齐。
5、 如果你的报表使用excel导出后,出现如下所示问题(本来是3列,结果多出来2列)
ireport细节教程_第3张图片
那么一定是,在你的ireport编辑器里,你的字段上下左右没有对齐,一定要对齐,分毫不差。
ireport细节教程_第4张图片
6、 如果你的报表在pdf预览、或者导出excel的时候,出现一行数据显示在多行中,如下图所示:
ireport细节教程_第5张图片
那么需要在ireport工具中选中detail栏,接着取消勾选split allowed,如下图
ireport细节教程_第6张图片
7、 如果报表导出的excel名称不正确,需要在这里修改:
ireport细节教程_第7张图片
8、 Summart一栏是用来结算合计的。在它的表达式里可以用java中的语法(加减乘除、四舍五入、确认精度、三目运算符等)
1) 做判断时,用三目运算符,if else 在这里不好使
2) 做除法运算时、先要确定被除数不能为0
3) 四舍五入运算用bigDecimal,下面是一个包含上面三种情况的例子
V o c c r o o m s 1 = = 0 ? 0 : ( n e w B i g D e c i m a l ( V{occrooms_1}==0?0:(new BigDecimal( Voccrooms1==0?0:(newBigDecimal(V{occrooms_1}/ V v a l i d r o o m 1 ) . s e t S c a l e ( 4 , B i g D e c i m a l . R O U N D H A L F U P ) ∗ n e w B i g D e c i m a l ( V{validroom_1}).setScale(4,BigDecimal.ROUND_HALF_UP)*new BigDecimal( Vvalidroom1).setScale(4,BigDecimal.ROUNDHALFUP)newBigDecimal(V{rent_1}/$V{occrooms_1}).setScale(2,BigDecimal.ROUND_HALF_UP))
4) 确定精度时,需要在这里设置
ireport细节教程_第8张图片
9、 报表中,所有涉及金额的字段,都需要设置精度
10、 Detail中的字段,最好都居中,这样显得好看,如下图所示
ireport细节教程_第9张图片
11、 公司报表统一设置了样式,直接拷贝一份即可
ireport细节教程_第10张图片
12、 报表表格一般都要有边框,如下设置即可,边框不要设置重复了(一般只设置两条就好),否则会出现有的行边框粗,有的细。
ireport细节教程_第11张图片

效果:
在这里插入图片描述

13、 如果报表Excel导出的时候,一些字段出现#######,那么说明这个字段宽度不够,需要在ireport中重新调整宽度

总结:目前遇到的小问题就这些,别看问题小,如果不知道,可得找半天。浪费时间,而且修改起来费时费力,因为测试同事可能并不是一次性把这些问题都测出来,这就导致一个报表需要反复修改好多次,特别耗费测试人员和开发人员的时间和精力。
我希望在做报表前,先看看我的这篇文章,可以避免上述的这些问题,一次性把工作做好,减少不必要浪费的时间

你可能感兴趣的:(web开发知识总结)