Jasperreport+iReport动态报表开发文挡
1. 和普通报表一样写好Sql语句,摆好要显示的字段。
2. 要显示的字段有N个就设置N个不同的参数$P{X},每个参数取名最好和字段有一定的联系,便于自己了解。下面分别用数字1-N来代替参数名字,字母a-z为字段名。
3. 在字段的Text Field Expression中写表达式。
表达式:$P{1}.equals(“a”)?$F{a}:$P{1}.equals(“b”)?$F{b}:$P{1}.equals(“c”)?$F{c}:$P{1}.equals(“d”)?$F{d}:$P{1}.equals(“e”)?$F{e}:$P{1}.equals(“f”)?$F{f}:” ”
equals(”X”)中的X是自己定义的,本人是为方便所以设为和字段名字一样。
4. 将此表达式复制到所有字段的表达式中,但是要修改参数的名字。例如:1改成2
$P{2}.equals(“a”)?$F{a}:$P{2}.equals(“b”)?$F{b}:$P{2}.equals(“c”)?$F{c}:$P{2}.equals(“d”)?$F{d}:$P{2}.equals(“e”)?$F{e}:$P{2}.equals(“f”)?$F{f}:” ”
5. 接下来做每列要显示的中文列名。通常我们都是用文本框来直接编辑中文,但是现在是动态的显示,不能够固定显示某个中文,所以也必须用$F{}和字段同步显示。
复制下所有字段,将字段中的表达式改下就可以了。比如:$P{1}.equals(“a”)?$F{a}:$P{1}.equals(“b”)?$F{b}:$P{1}.equals(“c”)?$F{c}:$P{1}.equals(“d”)?$F{d}:$P{1}.equals(“e”)?$F{e}:$P{1}.equals(“f”)?$F{f}:” ”里面的每个字段名字都改成中文的列名就可以了。$F{a}改成“用户名”,$F{b}改成“城市”。。。。。。等等
注意:所有字段框中Text Field的Blank when null给打上勾。
和Common中的Remove line when blank打上勾。
6. 都改好之后排好位置,编译下就生成.jasper文件了。
7. 前台:(本人是这样子做的)把所有字段列出来由用户选择。例如:有a,b,c,d,e,f字段,用户选择了显示a,c,e三个字段。
后台:将参数1设置为“a”,2设置为“c”,3设置为”e”传给报表。
注意:其它的参数都必须设置值为“X”,X为随便一个什么值,但就是不能为空。
8. 输出来的报表就是3个字段的报表的了。也许美观方面不是很理想,但是可以在前台的程序中控制,这个就大家自己去想了哦。
转自:
好了,就写到这里了,这是本人用Jasperreport+iReport工具开发动态报表时的一点心得,希望可以给大家一点帮助,一丁点帮助也可以,呵呵。本人也是新手,所以希望大虾们可以继续完善或者有更好的方法可以拿出来共享哦。希望以后可以得到大家的帮助哦。本人QQ名“小舟”,这边感谢QQ名为:”蓝星”,”冰山雪狼”,”碎魂”,”胜者为王”等朋友的无偿帮助。