设为首页收藏本站

birt家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12800|回复: 13

[birt3.7] 关于birt分组后空格行的问题,解决方案

[复制链接]
发表于 2012-8-15 14:41:55 | 显示全部楼层 |阅读模式

第1个表格使用脚本实现,第2个使用行高实现
birt版本3.7
如果不需要excel用第1种,否则第2种
第1种
论坛已有,直接分组,利用分组标题,行高设1像素,解决空格行的问题,在html,pdf,word都很完美,没有问题,但是在excel中,还是会出现空格行的问题
第2中
参考老外弄的,用脚本控制边框线,加动态隐藏数据,加分组,实现分组,没有空格行的问题。在html,pdf,word,excel都很完美,缺点就是不能居中,中间行,希望有高手些个犀利的脚本解决合并居中问题,用this.rowSpan貌似没效果!老外的文章实现方法如下:
这个url需要翻墙的
<http://enterprisesmartapps.wordp ... der-lines/%E2%80%9D>  I wrote about the drop property
and how to make it look decent when it is used in a table that has border
lines set. Now it turns out that the drop property does not work properly
when the output type is DOC or XLS.
Drop property result in DOC output
This is what the report from the earlier post looks like with output type
set to DOC:

The cells are merged correctly but the headers are not dropped.
Workaround
To work around this issue, I started with removing all grouping headers,
then I dragged all fields into the detail section and I added two
aggregations: a RUNNINGCOUNT in the Country column that aggregates by the
Country grouping and similar a RUNNINGCOUNT in the Manager lastname column
that aggregates by the Manager grouping. I set both aggregation fields
invisible. The aggregation on the Country grouping looks like this:

Next I set the borders of the grouping columns like this:

And then I added some scripts to the report.
In the report’s Initialize event:
var showTopBorderCountry = "1";
var showTopBorderManager = "1";
In the onCreate event of the Detail row:
if (this.getRowData().getExpressionValue("row[AggCountry]") == "1")
   showTopBorderCountry = "1";
else
   showTopBorderCountry = "0";
if (this.getRowData().getExpressionValue("row[AggManager]") == "1")
   showTopBorderManager = "1";
else
   showTopBorderManager = "0";
In the onCreate event of the Country header cell:
if (showTopBorderCountry == "1"){
    this.getStyle().borderTopColor="Black";
    this.getStyle().borderTopStyle="Solid";
this.getStyle().borderTopWidth="Thin";
}
In the onCreate event of the Manager header cells:
if (showTopBorderManager == "1"){
    this.getStyle().borderTopColor="Black";
    this.getStyle().borderTopStyle="Solid";
this.getStyle().borderTopWidth="Thin";
}
Finally, in the visibility property of the header cells, I wrote this
expression:
if (row["AggManager"] > 1) true; else false;
Now the DOC output looks like this:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +16 收起 理由
呼唤 + 16 你太帅了!

查看全部评分

 楼主| 发表于 2012-8-15 14:43:46 | 显示全部楼层
先自己沙发!
发表于 2012-8-15 15:06:28 | 显示全部楼层
嘿嘿,强烈支持一下。
发表于 2012-8-22 17:37:12 | 显示全部楼层
请问,你那个分组报表是怎么弄的,要嵌套吗,看不出结构
分享一下你的方法
发表于 2012-8-22 17:37:56 | 显示全部楼层
可否发一下你的outline结构图
 楼主| 发表于 2012-9-12 11:45:00 | 显示全部楼层
补上4张图片解释

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| 发表于 2012-9-12 11:46:27 | 显示全部楼层

回 fbpang 的帖子

fbpang:可否发一下你的outline结构图 (2012-08-22 17:37) 
请参考,那帖子的最新回复
发表于 2012-10-16 17:45:47 | 显示全部楼层
发表于 2012-10-23 13:44:49 | 显示全部楼层
老牛了
发表于 2012-12-24 17:59:06 | 显示全部楼层
这个教程有谁试过吗,我没看太懂,麻烦指定一下呗
qian 该用户已被删除
发表于 2013-1-31 14:25:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-12-5 11:00:41 | 显示全部楼层
高大上呀, 膜拜一下, 先收下了 ;
yl8771519 该用户已被删除
发表于 2015-1-15 15:43:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|birt家园    

GMT+8, 2017-12-12 05:15 , Processed in 0.245576 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表