为什么是jasperreport
一、为什么是jasperreport
很简单两点:
1 免费
2 在大多数开源产品中最能满足本人/公司的需求.
如果要一句话总结那么就是 "适合就好!" ,其次再想插一句"其实jasperreport可以做得更好,只是缺少大家去发现。"
在erp软件开发中一套强大易用的报表工具还是相当重要的地位,在这里我只针对一些日常业务报表.
jasperreport + ireport 报表套装在普通的报表中已做得很不错:流水账式的,分组报表都可以轻松实现.在这里提出的是一些相对特别以及少用到的报表设计问题.
当前版本 : jasperreport 1.1.0
ireport : 0.5.2
二、问题与解决
1.操作
初用ireport 设计报表(特别是早期的版本)感觉还是比较原始,相对于birt 类似于在 Dreamweaver中画table 式的设计还是有点差距.但新版本(0.5.2)中也有不小的改善,增加了很多快速对齐,格式化的工具栏以及快捷操作方式.通过结合这些操作还算是方便了不少.
2.分页
刚接触jasper report ,无论是看其官方的example还是自己动手设计报表, html view 总给人很深的印象:"怎么字体那么小,而且实际打印一下,分页功能并没真正实现"
经过客户一轮的抗义,最终还是下定决心去修补一下,
其实jasper report 原理还是挺简单:
它默认的分页方式是能过一轮的高度计算,再用两个<br>就以为了事了.[iocblog.net 来源]
<table>
<tr>
<td>
<table>
</table>
<br/> <!--两个br分行标记-->
<br/>
<table>
</table>
</td>
</tr>
</table>
解决方案:
好在jasperreport还提供了很好的扩展方案.它允许我们自定义分页方式(就是说在两页/table之间能让我们放自己的代码),自己定义betweenPagesHtml 就OK了,可以能过CSS定义分页.在这里,我就直接改它代码算了.大家可以自己选择.
net.sf.jasperreports.engine.export.JRHtmlExporter
<!--CSS代码-->
pageEnd
{page-break-after:always}
if (betweenPagesHtml == null)
{
writer.write("<br class=\"pageEnd\">"); // 原来是两个 <br/>
} else
{
writer.write(betweenPagesHtml);
}3. 打印[iocblog.net 来源]
分页解决后可以发现当报表预览时真的能一页一页分得很好.却又发现了一个问题.报表明显不能满一张A4张大小(ireport 设计选择的是A4纸张),疑惑了一际子,其实不能算是BUG.
ireport 报表属性中明显(21 * 29.7 CM) 一张A4纸的大小,为什么HTML出来的效果却明显小的那么多了.其实这与计算机的分辨率有关
计算机中的分辨率,普遍是72 象素/英寸,而打印机普通是300象素/英寸.
jasperreport 与ireport 默认单位是px,我猜想如果用CM做单位的话可以解决这个问题.但在这里我们的做法是尽量加大报表设计时的宽度与高度.另一个要注意的是记得将所有页边距设为0,因为这些设置在打印的时候已在IE/浏览器中设定了,不用重复.
4.分栏
以前没多注意,但刚用ireport新版本时可以发现在报表属性设计的时候可以设置栏.这下子如果当报表主体部分列数不多时实现分栏显示,以节省纸张.
5.斑马线式显示报表主体
有时我们想让报表更美化,让用户更方便地观看数据,可以设置两种色相隔.这种效果在jasperreport 中的example中有demo一下,大家如果想学习可以下载看看.
6.交叉报表
关于jasperreport的交叉报表设计网上还是有不小的讨论,而真正实现的不多.我观察过大多用jasperreport实现都是伪交叉报表.并不是真正实现真正的动态行与列.
其实在jaspert report下载包中还是有个交叉报表的实现example(crosstabs),只不过据我了解,现在ireport还不能实现设计.只能通过手工写jrxml文件实现.本人小试一下,还是挺不错的.
三、待研究
通过继承net.sf.jasperreports.engine.export.JRHtmlExporter ,还是能扩展不小的功能.例如用CSS格式化,可以大大减小代码量,动态列/可设列宽度大大增强我们的报表功能.
现本人初部实现100%宽度,不再用jasperreport中hardcode列度等等,以下三点还有待时间去跟进:)
1.动态列
2.可设列宽度
3.CSS设计
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。