论坛首页 Java企业应用论坛

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

浏览 7411 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-06   最后修改:2009-07-06

本人接触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了。

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

  • 描述: 1.bmp
  • 大小: 7.9 KB
  • 描述: 2.bmp
  • 大小: 15.3 KB
  • 描述: 3.bmp
  • 大小: 4.6 KB
  • 描述: Snap5.bmp
  • 大小: 29.2 KB
  • 描述: Snap6.bmp
  • 大小: 21.8 KB
  • 描述: Snap7.bmp
  • 大小: 26.2 KB
  • 描述: Snap10.bmp
  • 大小: 3.2 KB
   发表时间:2009-07-09  
不推荐birt
0 请登录后投票
   发表时间:2009-07-21  
1楼可否给出不推荐的理由?

我觉得楼主说得很对,BIRT有很多的小缺点,但是它很强大,代码量少。至于表格自动换行,看你怎么看待这个问题,WORD中的固定表格如果充满也会自动换行呀。

0 请登录后投票
   发表时间:2009-07-21  
UFIDA骄阳 写道

再比如。上面的模版。备注列内容过多。BIRT就会自动换行显示!本来一页可以放下20条数据。如果其中有一行备注过长自动换行了。那么这页就会显示19条。第二页就有可能只有一条数据。。。然后第三页在继续显示。

 

关于这个问题,Page Break Interval应该可以解决,除非你在20行后面aways分页,如果是这样就是设计问题。

1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics