----- 由于上次csdn 事件导致本人账号丢失,所以新建了个号,把文章重写贴一下
上次写完后,就进入了一个紧张的报表集成,现在就把前段时间遇到的一些问题以及心得和大家分享一下:
(一) 生成的报表有部分内容显示不出来:
起初这个问题很恼人,我同时生成的有html和pdf格式的文件(html 作预览,pdf作下载用) 经常性的是pdf文件内的内容完整,html里面 的东西残缺不堪(这里牵涉到一个jasper写出的问题,后面再谈)。久经调试后才发现,原来是有2个或者2个以上的单元格(TextField或StaticField或者其他)有一部分是重叠的。通常你确定你数据源没有问题,但是报表有显示不出来的话,十有八九就是这个;目前解决这个问题的方法就是:
a.在制作的时候放大些(比如放大3倍等等)这样可以很清晰的看到单元格边缘有没有重叠
b.在使用frame的时候,就是加边框,要注意内外包裹的顺序(------------)
( 二 ) 报表sql运用技巧
这张图里面捎带黄书的行,其实就是上面段内容的一个合计,但是再制作的时候这个就是父子报表的问题(只需要一个父子子报表的关联就可以):
a.父报表就是这个载体,内容要显示的载体像表头什么的 都应该在这个地方出现(只是针对本图)
b.子报表要完成的工作就是把所有的内容分组统计出来(也就是 又黄线分隔的部分作为一个分组)大家都知道在同一层报表里面不可能同时做统计和所有数据的显示,除了加父子报表或其他技术(统计是单行,显示是多行)。
c.2层子报表就是显示被统计的所有内容
通过这样一个父子报表的结构,就可以把这张图解析很清楚,下手做就是
(三)动态右边行
大家可能都有看到这样一种情况:左边一行对应到右边n多很的情况(这里称为动态右边行)
这里说说动态右边行最简单的表现形式,左边行的高度占据一个jasper单个detail 或其他部分,右边则跟一个子报表;然后调整 把stretch Type 属性设置成 Relative to Band Height; 意思就是让它随着列的增加动态增加;(解释: 由于左边和右边在同一个 jasper部分里面,占满这个部分,那么只要右边的内容变动,导致列数增加,那么左边由于设置了与行高相同,也会随着变化,最后就形成了 动态右边行)
(四)jasper 生成html ,pdf 的不同
jasper 生成html是严格按照单元格来的,一个地方只能有一个,儿生成pdf 的时候,为了显示中文都设置了 中文格式,它会把所有的内容都写到pdf里面,不会去考虑占位与否,就算是两个完全重叠的单元格也能显示出来
终于要告一段落了,最近都在整jasper稍有体会,大家相互探讨,有不对的地方还请各位指正