锁定老帖子 主题:BIRT报表个人经验。希望可以帮到大家!
精华帖 (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条。第二页就有可能只有一条数据。。。然后第三页在继续显示。我曾经做过无数的这样那样的实验。现在总结出来的方法就是。。。 整体思路就是 在制造出虚拟的一列。但是不被显示出来。如果备注一列的内容不超过限制内容 实现方法。现在数据集中增加一列 fenye 数据集OPEN中定义 numb=0; 在 FETCH中 if(headVo.getRemark().length()>14&&headVo.getRemark().length()<28){numb=numb+2};//假设PDF中一行可以放下14个汉字。超过14就加2.
最后在布局窗口中 左键点中详细数据行中的 备注。然后点 脚本。在 oncreate窗口中输入 if(row["fenye"]==20)
这个命令就是 分页。上边这段代码就实现了。不改变行高的情况下 自动识别里面应该放多少条数据。
但是。。。但是。。。。我自己有郁闷了。如果客户改变了纸张大小。那么上边的代码就会出现BUG了。 我目前的经验心得就到这了。希望大家可以多多教育。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-09
不推荐birt
|
|
返回顶楼 | |
发表时间:2009-07-21
1楼可否给出不推荐的理由?
我觉得楼主说得很对,BIRT有很多的小缺点,但是它很强大,代码量少。至于表格自动换行,看你怎么看待这个问题,WORD中的固定表格如果充满也会自动换行呀。 |
|
返回顶楼 | |
发表时间:2009-07-21
UFIDA骄阳 写道
再比如。上面的模版。备注列内容过多。BIRT就会自动换行显示!本来一页可以放下20条数据。如果其中有一行备注过长自动换行了。那么这页就会显示19条。第二页就有可能只有一条数据。。。然后第三页在继续显示。
关于这个问题,Page Break Interval应该可以解决,除非你在20行后面aways分页,如果是这样就是设计问题。 |
|
返回顶楼 | |
浏览 7411 次