在很多需要打印的报表中,受限于纸张的大小,往往会限制行数或者固定列数。我们在《单据类报表的制作》一文中,曾经介绍了限制了行数的情况如何实现,现在,我们再来看一下,在固定了列数的情况下,如果在某些行中,逐格横向填充数据,并在超过列数后自动折行。

我们先看一个例子的效果图:

在这张报表,由上而下其实分成了几个部分:

首先,表头和前两行是简单的描述信息;

然后,实际上是一个 4 行 5 列的固定表格,对“核定”、“实有”、“超空”、“批准使用”这四个项目进行了统计汇总;

再往下, “登记”这一行填充了来自数据库的人员姓名,为了整齐美观,要求按 4 个项目对应的 4 列逐格填充,而且人员数量会根据数据库中的实际情况填充,如果,当多于 4 人时还需要折行后继续按照一行 4 列进行填充,如图中的蓝色字体部分所示;

最后的两行都是文本描述。

类似的表格其实我们常常会遇到,例如下面这张 “学校公物监护人统计表”:

每一类公物的监护人横向逐格填写,超过 4 个时,都要折行展现,比如表中的“窗帘、窗户”的监护人。

熟悉报表设计的兄弟姐妹都清楚,一个业务字段的取值一般都是定义到一个格子后自动扩展,现在要分别放到 4 个单元格,这怎么拆开定义?

别着急!!下面将结合第一个“使用单”的例子,来了解一个神奇的报表工具。

根据表格本身硬性要求(4 列是固定列,不能自动扩展),我们能想到的方法只有用坐标的方式,按照位置号把登记人依次摆到对应单元格。

如果数据库中登记人员的姓名(XM)如下

那么我们就把登记人前 4 个(张三、李四、王二、王麻子)依次放到对应 14 格子里,下面 4 个再按照 58 放至第二行,依次类推。。。

至于另一个问题是应该摆几行?其实很简单,总人数除以 4,我们就可以判断出来了。

下面就是具体的操作过程:

把“使用单”固定格式的部分先画出来……

设置数据集,例子里使用润乾报表内建数据集进行模拟,如上图所示;

按照上面的分析思路完成行数计算及按坐标摆放的工作

其中:

(1)在“登记”行前增加一行,在 B11 中定义表达式:ds2.select(XM), 把登记人(XM)数据查出来备用,同时 B11 设置为“不可扩展”,此时为 XM 字段所有数据以逗号隔开的字符串(如,“张三, 李四”)。

(2)计算行数

在原 D 列前插入一列,在 D12 中定义表达式:

=to(1,int(ceil(ds2.count()/4)))

其中,int(ceil(ds2.count()/4)) 就是可扩展出的总行数

(3)按坐标摆放:

E12 表达式:=split(B11,“,”)(4∗(D12−1)+1)

G12 表达式:=split(B11,“,”)(4∗(D12−1)+2)

I12 表达式:=split(B11,“,”)(4∗(D12−1)+3)

K12 表达式:=split(B11,“,”)(4∗(D12−1)+4)

其中标红的部分即为按位置坐标取数。

(4)把新增的 D 列及 11 行设置为“隐藏”,仅用来辅助存放登记人序列串与生成行数,不需要显示。

4. 最后效果如我所愿,完美解决!

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

  1. 不再为DataGrid生成的表格的单无格中的内容过长、自动折行、表格撑开等问题而烦恼----一个很久以前的做品...

    是我以前用在一个项目中的,如有些地方不适用于你,你可以修改部分代码. 功能:    按列分色:                 过长内容自动隐藏:                 鼠标Over自动展开 ...

  2. 史上最全企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)

    前言 这个从上至下都在强调数字化转型的时代,越来越多公司重视数据,也越来越多的企业有数据建设的需求. 企业无论做任何数据工作,必然要有一定的信息化基础,也要有数据化建设的基础,少不了数据平台.数据应用 ...

  3. 帆软报表在已经搭载服务器上开发_史上最全企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)...

    前言 这个从上至下都在强调数字化转型的时代,越来越多公司重视数据,也越来越多的企业有数据建设的需求. 企业无论做任何数据工作,必然要有一定的信息化基础,也要有数据化建设的基础,少不了数据平台.数据应用 ...

  4. InfoPath中repeationg section动态填充数据

    项目后台使用的是基于InfoPath的后台管理系统.后台主要是生成CMS系统需要的XML文件,但是有的内容和其他的内容有关联.为了减少编辑人员的操作难度,所有相关的内容,都需要自定义开发InfoPat ...

  5. POI操作word填充数据,合并多个word为一个,遇到一些问题的解决

    POI操作word填充数据,合并多个word为一个,遇到一些问题的解决 最近搞一个向word模板中替换占位符 填充数据,然后将多个word合并在一起的方法.网上一搜有很多资料,现在在这儿对过程中遇到的 ...

  6. php 图表教程,TeeChart for PHP教程(一):构建图表并填充数据系列

    TeeChart for PHP包含100%的PHP源代码.它支持PHP5及更高的版本.它可作为一个调色板组件整合到针对PHP的Delphi编程环境中,从而让其他人在运行时以创建组件的方式来引用.第一 ...

  7. html表格不能横向自动展示,html table表格列数太多添加横向滚动条

    HTML的table表格的列数如果太多或者某一列的内容太长,就会导致表格td的内容被挤压变形,对后台的使用体验非常不友好.比如下面的情况: 那么如何在表格列数较多的情况下添加横向滚动条?其实很简单,只 ...

  8. python prettytable表格列数太多_html table表格列数太多添加横向滚动条

    HTML的table表格的列数如果太多或者某一列的内容太长,就会导致表格td的内容被挤压变形,对后台的使用体验非常不友好.比如下面的情况: 那么如何在表格列数较多的情况下添加横向滚动条?其实很简单,只 ...

  9. c 语言如何处理表格文件中的数据库,C#程序从Excel表格中读取数据并进行处理

    今天做了一个Excel表格数据处理的事情,因为数据量表较大(接近7000条)所以处理起来有点麻烦,于是写了一个程序, 先将程序记下以便将来查找. using System; using System. ...

最新文章

  1. pandas使用select_dtypes函数移除dataframe中指定数据类型的数据列(exclude columns based on the data type in dataframe)
  2. Centos7 安装maven3.5.0和git
  3. 如何保证消息不被重复消费啊(如何保证消息消费时的幂等性)?
  4. java读取文件内容,文件头有\ufeff
  5. 从这十大算法开始学习机器学习与建模
  6. 传网易、京东6月相继赴港上市:共计筹资50亿美元
  7. 怎样在Xcode 4下编译发布与提交App到AppStore?(转)
  8. 自己创业做电商,应该怎么做?
  9. python数据类型_Python数据类型
  10. 【To Understand】程序员面试金典——番外篇之洪水
  11. oracle11g密码效期及用户锁定
  12. WordPress 插件机制的简单用法和原理(Hook 钩子)
  13. php社工源码,社工库源码搜集
  14. win10解决无法远程桌面连接问题(参考)
  15. 固态硬盘寿命测试一年半 寿命指数超乎想象 连写2500TB终于全挂
  16. [SSL_CHX][2021-8-19]空瓶换饮料
  17. 语句摘抄——第29周
  18. 在Windows和macOS上更新Node.js到最新版本
  19. 成功鲜有偶然:一览IT名人的教育成长经历
  20. 纯C语言写计算器界面

热门文章

  1. Ubuntu 14.04 64bit上玩转graphviz绘图工具
  2. 在Substance Designer中创建砖墙视频教程
  3. 3DsMax渲染插件VRay NEXT完整的视频指南
  4. 二叉树:二叉搜索树的编码和解码
  5. C++智能指针:weak_ptr实现详解
  6. centos 安装 mysql 5.7
  7. 谷歌推出情境感知API
  8. 零基础学汇编 --小甲鱼
  9. [WCF REST] 解决资源并发修改的一个有效的手段:条件更新(Conditional Update)
  10. Linux下DNS轮询与Squid反向代理结合