报表,我们习惯于认为主要用来呈现数据汇总、排序、分组对比的效果,一般都是“横平竖直”的效果,也就是我们常说的二维表格,最多也就是通过一些斜线、合并表示一些特殊的数据关系。事实上,报表还可以通过实行各种不规则的布局,来发挥更大的作用。

首先,我们就拿我们每个人几乎都遇到过的大大小小的各种考试来举例。每逢考试就一定会有考场座位分布图,以便考生对号入座参加考试。这里看一个具体的案例,来自于某地的一次职业技能考试,总共涉及数十所所学校,数千名考生,每人参加 4 门学科,需要按照专业、场次、时间以及一定的随机规则进行座次安排,最终输出座位分布图,然后打印并在各个考场张贴。要求每名考生的座位标签如下图所示:

整个教室的作为分布如下图所示:

这种形式的报表就不再是简单的“横平竖直”了,而是我们所说的不规则布局。具体第说,这种布局有一个形象的名称“龙形布局”,也就是每个小的局部作为标签具有自己的布局,好像是龙的鳞片,而整体上又按照一定的宽度(这里是 2 列)进行纵向排布。

那么,有什么方法可以简单、快捷地一下子制作出数千人的“龙形布局”座次分布图呢?——润乾报表就可以!

话不多说,下面我们一起看一下润乾报表中如何轻松搞定这类不规则布局的吧!

首先,根据效果图绘制报表样式和框架,如下:

这里偷偷泄露一个小【技巧】,我们使用“to 函数 + 纵向扩展”控制每列放几张桌子,就是上图 C4 单元格的表达式。

接下来,填入考生信息,如下

其中:

A4 单元格中表达式为:=ds1.group(ZYGZMC;ZYGZMC:1),合并单元格 A4-A8, 纵向扩展,分组取出职业名称并升序排列,后面的数据将默认以 A4 单元格为主格跟随扩展取数。

B4 单元格中表达式为:=ds1.group(KCMC;KCMC:1),操作同上,KCMC 代表考场名称

D5 单元格中表达式为:=valueat(ds1.select(LLKCZWH:-1,LLKCZWH<6),C4),给每个桌子贴上理论考场座位号

E4 单元格中表达式为:= “理论:”+ds1.select(LLPD,LLKCZWH==D5),ds.select 函数根据理论考场座位号(LLKCZWH)取出理论评审(LLPD)成绩

F4 单元格中表达式为:=ds1.select(ZHPD:-1,LLKCZWH==D5),操作同 E4,ZHPD 代表 综合评审成绩

E5 单元格中表达式为:=”实践:”+ds1.select(SCPD,LLKCZWH==D5),操作同 E4,SCPD 代表实践评审成绩

E6 单元格中表达式为:=”综合评审:”+ ds1.select(ZHPD,LLKCZWH==D5),操作同 E4,ZHPD 代表综合评审成绩

E7 单元格中表达式为:=ds1.select(XM,LLKCZWH==D5),操作同 E4,XM 代表考生姓名

E8 单元格中表达式为:=ds1.select(ZKZH,LLKCZWH==D5) ,操作同 E4,ZKZH 代表考生准考证号

到这里,我们已经将左边 1 列的 5 位同学安排妥当了,接下来的操作相对就简单一些了,主要是把 D、E、F 列的内容复制到 H、I、J 列,然后做一些小的修改:

H5 单元格中表达式为:=valueat(ds1.select@r(LLKCZWH:1,LLKCZWH>5),C4),复制粘贴得时候别忘记修改取数的范围奥。

I4 单元格中表达式为:= “理论:”+ds1.select@r(LLPD,LLKCZWH==H5),注意注意,这里有一丢丢变化奥, ds.select 函数使用 @r 选项是为了保证数据从根数据集中取数不受前面那列的影响奥。

J4 单元格中表达式为:=ds1.select@r(ZHPD:-1,LLKCZWH==H5)

I5 单元格中表达式为:=”实践:”+ds1.select@r(SCPD,LLKCZWH==H5)

I6 单元格中表达式为:=”综合评审:”+ds1.select@r(ZHPD,LLKCZWH==H5)

I7 单元格中表达式为:=ds1.select@r(XM,LLKCZWH==H5)

I8 单元格中表达式为:=ds1.select@r(ZKZH,LLKCZWH==H5)

Bingo!有木有很意外,做到这里就已经轻松搞定考场分布报表了,是不是赶脚很简单,时间也节省了不少?多出来的时间您一定不介意(坏笑)我再多说些什么吧…..

上面我们所完成的布局属于平面规划的直观展示,接下来,我们再看一种非常实用的业务场景:

以仓储行业为例,在实现了条码管理的仓库,出入库单据可以通过简单的扫码完成货品的归位或取出,这时,出入库单据上就需要印制多个条目,每一项都会有相应的条目,如果按照常规布局的话,如下

但是这种布局有一个问题,就是很有可能会出现错行扫描的情况!为此,润乾报表又偷偷给关注的我们程序猿哥哥发福利了——制作打印以下这种“错位”形式的“入场券”:

是不是已经迫不及待想要进场了解下这种条码不规则“错位“布局是怎么被搞定的了? 别着急,我们这就开始说道说道:

将左右错位的 2 个条形码看做一组,先弄出个样子,然后填写相应的数据表达式,如下:

其中:

A4 单元格中表达式为:

=if(ds1.count()%2==0,to(1,ds1.count()/2),to(1,ds1.count()/2+1)),根据条码总数是奇数还是偶数,确定总共需要纵向扩展几组。

B4 单元格中表达式为:=ds1.select(field1)(A4[-1]+A4),意从结果集 ds1.select(field1) 中根据行号取出条形码

C4 单元格右键 选择“条形码”,内容表达式为:=B4,同时勾选“显示文字”, 指定条形码按照指定单元格数据呈现

B5 单元格右键 选择“条形码”,内容表达式为:=C5

C5 单元格中表达式为:=ds1.select(field1)(A4[-1]+A4+1)

然后……就没有然后了……“噹噹噹”,是不是吓一跳,到这里又一个看似复杂的布局“错位条码清单”就这么轻松搞定了,忍不住想要动手试试了,那就别犹豫了“撸起袖子,做起来吧 !!!”。

最最后,划重点圈知识点啦,不看的话,明天用到可别怪我没告诉您奥。

如何控制布局:

【知识点】使用 to() 函数来做一些特殊报表格式的控制,根据条件限定行列数;

如何从一个集合中取出指定的成员

【知识点】valueat() 常用于从数组或者集合表达式中取出的某一个元素;

如何排除前面列的影响直接从总结果集拿数据

【知识点】比如考场座位图中 @r 选项的使用

小提示:

【操作技巧】制作此类报表如果不能一眼找出数据呈现的规律以及取数方式不妨拿出纸笔,在纸上写出一部分数据,或许一下就明白了。

说到这里,关于“报表布局技巧与应用”的简单介绍真的真的告一段落了,实现上面的效果我们仅仅是在常规展现的报表基础上使用了 1-2 个函数(比如:to()、valueat()、if())就做出了考场座位图、错位条码清单的效果,有木有感觉 So easy,几个函数轻松搞定。从此以后,做表再也不用害怕遇到神马仓库货位管理展示图、学生宿舍的分布….. 的情况了

详情链接:http://c.raqsoft.com.cn/article/1533026639184?r=gxy

报表中如何实现不规则布局相关推荐

  1. 报表中Mail Label 的使用

    Crystal Report在报表向导中提供了三种向导类型给用户进行选择--Standard.Cross-Tab和Mail Label,而Visual Studio/BIDS报表向导只有两种--表格格 ...

  2. 禅道报表中关闭bug统计图_想要简单制作数据可视化分析报表?这个工具绝对好用...

    说到分析报表,行外小白都会觉得很简单,不就是整理数据到表格吗?但对于从事相关职业的同行来说,肯定多多少少会被报表困扰过.特别是对于一些高级的Excel报表,可是它需要复杂的函数,使用编程代码处理,上手 ...

  3. 如何在分组报表中实现组内数据补空行及组内页码

    在对报表数据进行打印时,经常会要求进行精确打印,比如一张纸能打印 20 行数据,如果超过就分页,如果不满 20 行,则在数据下方进行补够空行.这种情况最常见于银行对账信息等明细数据的打印.同时,在某些 ...

  4. jasper report 子报表中嵌套子报表

    上篇记录了主报表中嵌套子报表,用json数据源设计报表,没有问题了. 本篇记录下子报表中再嵌套子报表(即孙报表)怎么实现. 思路:把需要再嵌套孙报表的子报表sub_report3,当做主报表设计,内嵌 ...

  5. iOS流布局UICollectionView系列七——三维中的球型布局

    iOS流布局UICollectionView系列七--三维中的球型布局 发布时间: 2015/10/29 13:25 阅读: 1487 收藏: 23 点赞: 1 评论: 5 摘要 类似标签云的球状布局 ...

  6. c语言向表格内存入数据,怎么实现横向到存入多个单元格,在列数固定的报表中逐格横向填充数据并折行...

    在很多需要打印的报表中,受限于纸张的大小,往往会限制行数或者固定列数.我们在<单据类报表的制作>一文中,曾经介绍了限制了行数的情况如何实现,现在,我们再来看一下,在固定了列数的情况下,如果 ...

  7. 填报表中也可以添加 html 事件

    在实际的项目开发中,填报表的应用十分广泛. 多数情况下,填报表会作为整个项目的一部分配合需求灵活使用,但有时也会受大项目环境的影响,产生一些特别的要求.比如,通常报表单元格的数据类型大多是文本,有时却 ...

  8. 使用ROW_NUMBER 和partition by 解决报表中的查询问题

    在报表中遇到一个查询问题: 原始数据如下: Id cust_id call_date call_result 1 1 2012-03-15 09:00:00 fail 2 1 2012-03-15 0 ...

  9. SAP MM ME81N PO Value Analysis报表中Net Value 为负数是怎么回事?

    SAP MM ME81N PO Value Analysis报表中Net Value 为负数是怎么回事? ME81N 报表中,如下PO的net value为负数, 怎么回事? 经查这些PO都是退货采购 ...

最新文章

  1. 学会python之后-学会Python后,人生简直开挂了!
  2. Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略
  3. WinCE 系统刚启动时运行应用,在应用启动时偶尔出现异常
  4. python任务调度平台 界面_分布式任务调度平台XXL-JOB
  5. SQL Server:触发器详解
  6. bugzilla dbd-mysql_别人写的关于在Windows下安装BugZilla的说明,不错,值得借鉴
  7. 【机器学习与差分隐私代码实现】差分隐私代码实现系列(十二)
  8. Python_socketserver
  9. 详解NFS共享储存服务布署
  10. 一个按钮多个ajax,如何为表格中的多个按钮设置AJAX调用
  11. ImageButton属性
  12. 关于AP没办法获取IP地址故障排查及思路。
  13. 机器学习周刊第二期:深度学习上了Nature
  14. 回归系数t检验公式_高考物理公式、规律汇编表
  15. 供应链金融业务如何脱颖而出?
  16. 一个故事轻松记忆常见252个英语字根(31~80)
  17. 打开服务器网页要5秒,网页优化技巧 如何把网页加载时间控制在1.5秒以内
  18. 3D Max合并两个.max文件
  19. LED亮5秒灭5秒C语言程序代码,单片机【木仓示申吧】_百度贴吧
  20. 别人都是笑起来很好看,但是你却不一样,你是看起来很好笑。

热门文章

  1. Android Studio 使用记录
  2. ## 用python 80行代码实现一个微信消息撤回捕捉功能
  3. Java抽象类,接口练习之猫狗案例加入跳高功能分析及其代码实现
  4. 快速将多个Excel表格合并为1个,你会吗?
  5. matlab让legend横着排,echarts画一个饼图, orient: 'horizontal',图例横向排列,当图例比较多时,如何在第二排让图标一一对齐?...
  6. 青龙脚本(七猫免费小说,附脚本)
  7. 基于Hadoop HA集群部署HBase HA集群(详细版)
  8. 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))
  9. STM32cubeMX:双通道ADC(DMA)
  10. (附源码)ssm失物招领系统 毕业设计182317