使用工具为 TIBCO Jaspersoft Studio-6.19.0
JasperReport实现动态报表主要分为几个方面。
1、元素高度的动态变化,也就是字数过多时候,会自动往下移动。
2、位置的动态变化,当高度是动态的时候,高度的动态变化也是必然需要的。
3、动态显示某个区域的问题,例如当没有优惠券的时候,我们是不需要显示优惠券这一块区域的。
接下来我会进行说明。
一、高度变化
Text Fileld的高度自动调节
在使用Parameters去接收参数的时候,我们不确定输入的参数长度是多少,这样子我们就需要去动态的调整高度,以让内容全部显示出来。
默认的我们的Text Adjust的属性默认为CutText。意思很直白,就是多余的字段会直接剪掉。我们需要调整为stretchHeight,意思是高度是动态的,另外一个ScaleFont,翻译一下我们就知道,这个是缩放字体的意思,只不过缩放字体有时候还是会放不下需要展示的内容。
调整如图所示:
测试结果如下图
二、位置的动态调整
位置的调整在Position type里面。选择Float就可以了,这样子位置就移动了。
不过需要注意的是,上下两个元素的位置不能重合,不然的话,float就会失效。
不使用float的时候,高度变化就会出现这种情况
三、动态显示某块区域
单个Parameters可以使用 Blank When NULL,意思是里面值为空的时候不显示,不然的话会显示null。当里面有部分静态元素时,可以使用**Print When Expression **,使用上Remove Line When Blank则会移除掉空行。
Print When Expression需要填充一个Boolean值,如果为真,则显示这块区域,如果为假,则不显示,jasperReport的Boolean写法是这样子的Boolean.TRUE。Remove Line When Blank的意思则是为空的时候,移除掉改行,配合位置Float类型,可以让元素往上面移动。
举个栗子
1、先建立一个Parameter,flag。
2、把元素拉入Detail里面,并加入Static text
3、调整显示
把参数的Blank with null勾上,钩上remove line when blank
静态元素写上print when expression的表达式,钩上remove line when blank
($P{flag}== null ||$P{flag} =="") ? Boolean.FALSE : Boolean.TRUE
4、下一段的语句选择float
让我们来看一下效果
当flag不为空时:
当flag为空时: