BIRT报表个人经验。希望可以帮到大家!

本人接触BIRT时间不长。1年半。浅谈一下。我的项目都是SSH框架。在DAO中得到数组LIST。或者MAP。然后传到BIRT中。下边开始从BIRT中说起。

新建数据源!(图1)选择数据源类型。示例数据库可以供大家试验用。我用的是脚本化数据源。(图2)

新建数据集。(图3)给数据集起个名字。可以是汉字。然后下一步定义列字段。字段为英文,比如我做的报表有2列。姓名、备注。(Snap5.bmp  ). 下一步开始编辑脚本!左键选中数据集,然后点主窗口中的“脚本”。OPEN顾名思义就是刚进入报表时做什么。这里写的是JAVA代码。不做过分解释。(Snap6.bmp)接下来在FETCH窗口。FETCH就是循环窗体。也就是说,如果你DEBUG打在这里。那么有10条数据。就走10边这里。代码见(Snap7.bmp).

 

下边就是画模版。这里学问还是有点的。也不是太好表达。要靠自己去研究。但是总体规则有。布局窗口就是正文。主页窗口包括 标题 和 页码!正文中如果只有循环体和列头那么拖拽一个一个palette工具中的一个“表”就够了。然后把先前做的数据集中的字段拖拽到 数据明细行 。见图(Snap10.bmp)。

这样基本的功能实现了。展现数据。导出PDF.XLS~~~。

下边开始聊聊稍微深层次的东西。这都是我一个人研究的。我好想能到网上找到方法。但是偏偏没有。没想到这次我做了第一个吃螃蟹的人。如果大家也有这样的研究不过没上传到网上。那么看到我方法的缺点请毫不客气的指出。QQ362224221. E-MAIL tangzexu@use.com.cn

 报表。顾名思义就是要打印在纸上!拿在手里的。可是BIRT伴随着这样那样的缺点。

比如。页码 “第1页/总10页”。这个看起来很规整!但是如果总页数是 1000页 效果就会是这样!“第   1页/总1000页”。而对于大型公司打印1000张很平常。

再比如。上面的模版。备注列内容过多。BIRT就会自动换行显示!本来一页可以放下20条数据。如果其中有一行备注过长自动换行了。那么这页就会显示19条。第二页就有可能只有一条数据。。。然后第三页在继续显示。我曾经做过无数的这样那样的实验。现在总结出来的方法就是。。。

整体思路就是 在制造出虚拟的一列。但是不被显示出来。如果备注一列的内容不超过限制内容
这一虚拟的列就+1. 如果超出一行 就加2 如果超出2行就加3.。 最后在限制这个虚拟值等于20的时候就
分页!

实现方法。现在数据集中增加一列 fenye

数据集OPEN中定义 numb=0;

在 FETCH中

if(headVo.getRemark().length()>14&&headVo.getRemark().length()<28){numb=numb+2};//假设PDF中一行可以放下14个汉字。超过14就加2.
if(headVo.getRemark().length()>28&&headVo.getRemark().length()<56){numb=numb+3};//表示字数超过两行。但是不超过3行。
if(headVo.getRemark().length()<=14){fenye=fenye+1};
if(numb>=20){numb=1;}//表示页标准高度 为20行!
row["fenye"]=numb;

 

最后在布局窗口中 左键点中详细数据行中的 备注。然后点 脚本。在 oncreate窗口中输入

if(row["fenye"]==20)
{
 style.pageBreakAfter = "always";
}

 

这个命令就是 分页。上边这段代码就实现了。不改变行高的情况下 自动识别里面应该放多少条数据。

 

但是。。。但是。。。。我自己有郁闷了。如果客户改变了纸张大小。那么上边的代码就会出现BUG了。

我目前的经验心得就到这了。希望大家可以多多教育。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值