ITPub博客

首页 > 应用开发 > Java > 单据类报表的制作

单据类报表的制作

Java 作者:rqgxy 时间:2018-11-15 22:32:05 0 删除 编辑

在银行、财务、销售等系统中,常常会看到这样一类报表,它们一般是从原来的手工报表年代沿袭而来,需要打印在固定大小的纸张上,有着固定的样式要求。具体的形式包括各种登记本册和单据等。

在没有报表工具之前,这类报表大部分使用 Excel 进行制作,费时费力还不易维护,每次都独自加班到很晚(一首凉凉送给自己)。今天,我要带一带新的节奏,展现一下神操作来制作这类单据报表。

这次我们拿公积金单据来进行具体操作演示。下图就是公积金管理中心为各单位提供的缴纳单据,一般要求单据的每一页上方都有单位信息,中间填写单位工作人员的具体公积金缴纳明细,最下面是合计和签章信息。一个手工年代的怀旧特点是,每页只显示 7 条数据,多了填到下一页,一页不够 7 行也要补上空行,而且要和纸质单据格式大小完全对应上:

单据报表效果图

好吧,为了按时下班,让我们用润乾报表赶紧开始吧:

首先 ,根据效果图绘制报表样式和框架,如下图:
单据报表框架图
【实用小技巧】因为单据类报表基本都需要打印在固定格式的单据上,也就是俗称的“套打”,所以在设计报表的时候就需要根据实际的单据来设计。具体做法是:用扫描仪扫描单据图片,然后把图片调好大小,设置为报表背景图(报表属性–> 其他–> 背景图),这样就可以比着图片的边框来调整报表的单元格。

接着 ,设计固定数据区域:

根据业务需求,要求第 1 行到第 8 行、第 11 行到 14 行的内容每页都显示,那么我们需要通过行属性设置实现此效果:

1-8 行需要设计为分组表头。11 行到 14 行设置为报表尾。

设置完后如下图所示:
单据报表行属性设置图
然后 ,明细数据关联计算

业务要求按照流水号分组显示明细,所以我们添加上对应单元格表达式,并做数据关联
单据报表数据关联配置图
其中,

A1:=hnszgrkhdjqc.group(流水号; 流水号:1),合并单元格后前八行数据都跟随流水号动态取数显示记录,D4、D5 单元格如需从数据集取数,直接用取值表达式即可
B9:=hnszgrkhdjqc.select(id),并设置左主格为 A1,表示跟随流水号动态取数
C9:=&B9,并设置左主格为 B9,为序号实现方式的固定用法
D9 之后的单元格表达式我们可以直接使用取值表达式,即:数据集. 字段名称
最后 ,完美实现空行效果

实现每页固定显示 7 条明细数据,且不足 7 行时进行行补足,这需要分成两步:
单据报表补足空行设置图
1. 补足空行:

我们在第 10 行位置插入一行,编辑补足空行表达式 C10:=to((hnszgrkhdjqc.count()%7)+1,7),根据记录数判断是否补足,这里是需要跟随流水号进行判断的,所以需要设置 A10 的左主格为 A1。

特殊的,当记录数够 7 行的时候,也会进行扩展,这个时候需要将多余扩展行隐藏掉,具体实现方法如下图所示(利用隐藏行表达式):

隐藏行设置图

2. 对于每页固定 7 行的效果,我们可以通过行后分页 + 按纸分页效果实现:
<1> 在报表属性–》分页中设置为按纸分页,纸张大小根据实际业务需求进行设置
<2> 在 C10 单元格右侧单元格属性中找到“行后分页”属性配置,并增加表达式:if(D1%7==0,TRUE,FALSE),表示如果分组内的数据记录数能被 7 整除,那么就隐藏,否则就显示扩展后的数据

imagepng

好了,一个完美的单据类报表就完成了,我们来回顾一下其中遇到的问题和解决的技巧:

1. 每页的固定表头表尾显示

【技巧】设置行属性为分组表头和报表尾

2. 补足空白行,保证每页固定条数明细数据

【技巧】使用 to() 函数和动态隐藏行实现补足空白行,使用行后分页功能实现固定行数分页效果

至此,单据类报表制作就完成了,我们仅仅使用了润乾报表的左主格和行后分页功能就做好了单据报表,这一波操作 6 不 6?神马银行汇款单、开户单、仓库出入库单·····都 so easy,快来加入润乾大家庭,从此和加班 say byebye。


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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31555597/viewspace-2220278/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-20

  • 博文量
    405
  • 访问量
    195270