卡片式报表分栏奇数条 格式不对齐 巧用补空行解决问题

报表开发过程中,制作卡片式报表是很常见的需求,大多数情况下我们会将一个个卡片独立一页进行打印,但有时也会按照纸张打印所有,如下图

61png

这时我们会发现 如果数据为偶数条(也就是对应偶数个卡片)报表会按照我们预设的分两栏且对齐显示,但是数据出现奇数条时,展现就会出现不对齐的现象,一个卡片被分在了两栏 如下图

imagepng

这是我们这次分享的重点,如何保证奇数个卡片式 仍然对齐

首先,准备一个卡片式报表 且设置 分栏。

imagepng

其中,数据集 SQL 为:

SELECT (雇员. 姓氏 + 雇员. 名字) as 姓名, 雇员. 雇员 ID, 雇员. 职务, 雇员. 雇用日期, 雇员. 地址, 雇员. 出生日期, 雇员. 邮政编码, 雇员. 照片 FROM 雇员 where 雇员. 雇员 ID<6

注:参数部分可根据实际情况调整

各单元格表达式,如上图中所见,需注意 A 列 所有单元格的左主格为 B4, 目的为保证每一个雇员信息匹配以卡片形式呈现

imagepng

接下来,报表属性中设置分栏如下图

imagepng

到这里,一个简单的卡片式报表分栏效果就准备好了。

最后(重点),巧用内置函数 to() 实现奇数时补空行 保证分栏对齐呈现。

这一步我们首先要观察,每一个卡片所占的行数;
其次,结合数据集的总数据行 来判断需要扩展补充的空行数。

观察发现这里每个卡片是 15 行,那么扩展表达式应该是 to(1,if( 奇数条件,15,1))

其中奇数条件需满足数据集条数不能整除 2 且数据集条数等于目前扩展的最大序号,即 ds2.count@r()%2==1 && ds2.count@r()==&B4

所以最后完整的表达式为:
=to(1,if(ds2.count@r ()%2==1 && ds2.count@r ()==&B4, 15,1))
写入 A15 单元格

imagepng

展现效果(框出来的为填充的空行)

imagepng

最最后设置 A15 单元格为不可视即可。

到这里问题通过一两个小小的函数就轻松解决了。

示例报表下载请点这里

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾