分栏报表制作攻略

2023-10-17 11:58
文章标签 制作 报表 攻略 分栏

本文主要是介绍分栏报表制作攻略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、分栏的意义

我们常常会遇到一些列数很少行数很多的报表,这种报表窄窄长长,打印在一张 A4 纸上,横向留出大片空白;或者行数很少,列数很多的报表,打印在 A4 纸上,纵向留出大片空白·····这些情况下不但浪费张纸而且不美观,不方便用户查阅。

为了解决这种问题,我们提出了分栏的解决方案,把数据按照一定的规则分栏分块的显示在纸张上。下面我们来具体看一下润乾报表是如何解决分栏问题的。

二、分栏的实现方法

我们吧分栏大致分为三类:卡片分栏、行分栏、列分栏。我们按照分类看下不同类别下应该如何实现分栏效果。

2.1 卡片分栏

2.1.1 卡片分栏效果图

imagepng

2.1.2 卡片分栏实现步骤

1. 绘制卡片报表,如下图所示:

imagepng

卡片式报表绘制时,注意主格的设置:选中 A 列设置左主格为 B2。

这样才能保证报表数据在展现时的分块效果。

2. 设置报表分栏属性

在报表—报表属性—分页配置页面中设置分栏数,如下图所示:

imagepng

分栏数的配置规则是:纸张的宽度 / 报表的宽度。这样能保证最大程度利用纸张且保证数据展现的效果。

至此,我们就配置完成了卡片分栏报表。在润乾报表中,我们只需要设置下分栏数就可以实现卡片报表的分栏效果。

注意事项:分栏报表中不允许存在隐藏行;尽量避免在第二栏中涉及自动换行撑大单元格的情况。

2.2 行分栏

2.2.1 行分栏效果图

行分栏也叫做横向分栏,也就是把数据行按照一定的规则拆到不同的栏中。

imagepng

2.2.2 实现方法

这里有两种实现方法,一种是在报表单元格中通过表达式拆分,另外一种则是在数据集中吧数据拆分好。

方法一:to()+valueat() 函数实现分栏

数据集 ds1 直接从数据库表中取数,sql 语句是:

SELECT 编号, 部门, 姓名 FROM 员工表

重点在于单元格表达式的拆分处理。

imagepng

其中,A5 单元格表达式:=to(0,ds1.count()/3),报表要分成三栏,所以我们要算出来每一栏要对应多少行数据。

B5 单元格表达式:=valueat(ds1.select( 编号),3*A5),从数据集集合中取出对应行的记录,按照三倍的规律取对应位置的数据返回。

依次类推,F5 单元格表达式为:=valueat(ds1.select( 编号),3*A5+1)

J5 单元格表达式为:=valueat(ds1.select( 编号),3*A5+2)

PS:valueat 函数的取值从 0 开始。

此方法有一个缺点:当数据量比较多的时候,valueat 的取数性能会相对降低。

方法二:集算器脚本实现分栏

为了解决方案 1 在大数据量下的性能问题,我们把数据的拆分处理在数据集中完成,在润乾报表中我们可以使用脚本数据集来实现这一过程。

首先,在集算器设计器中进行脚本的取数调试,脚本配置如下:

imagepng

其中,A1:=connect(“demo”) 表示连接 demo 数据库;

A2:=A1.query(“SELECT 编号, 部门, 姓名 FROM 员工表”) 表示从 demo 数据库中取出员工表的数据;

A3:=A2.step(3,1) 表示每三条记录取第一条;

B3:=A2.step(3,2)|[null] 表示每三条记录取第二条;

C3:=A2.step(3,3)|[null] 表示每三条记录取第三条;

A4:=A3.derive(B3(#). 编号: 编号 2,B3(#). 姓名: 姓名 2,B3(#). 部门: 部门 2,C3(#). 编号: 编号 3,C3(#). 姓名: 姓名 3,C3(#). 部门: 部门 3) 表示吧三部分的数据整合到一起,组合成一个完整的数据集返回。

然后,在报表中新增集算器类型数据集,并加载编辑好的脚本文件,如下图所示:

imagepng

最后,按照常规报表取数生成报表文件:

imagepng

这种方法的优先在于,可以更加方便的对数据进行处理,在处理过程中不依赖数据库,而且也最大程度上减少了单元格的二次计算处理,提升了报表的性能。

2.3 列分栏

2.3.1 列分栏效果图

当列数比较多,需要强制折行到下一行显示时,就是对应我们常说的列分栏需求。

imagepng

2.3.2 列分栏实现步骤

实现的原理是,我们把数据按照一定的规则强制设置换行,比如上图的需求,需要每行显示六列数据,那么我们只需要按照这个规则算好需要分几行,然后吧数据填充进去就可以了,具体单元格表达式配置如下:

imagepng

其中,A1:=ds1.count(),用于计算此数据集内的数据个数。

A2:=to(1, int(A1)/6+1),作为强制分行的扩展基础,int(A1)/6+1 用于计算一共需要扩展的行数,其中”6″是每行的数据列数

B2:=(A2-1)*6,是每行的基数。

D1:=if(A1<6,to(1,A1),to(1,6))  ,控制显示为 6 列数据, 数据够 6 列就换行

D2:=ds1.select(name, #0==D1+B3,1) ,其中 D1+B3 分别递增,达到与每个行号进行匹配的目的,#0 表示取对应记录的行号。

D3:=ds1.select(price,rownum==D1+B3,1)

至此,就实现了列分栏的需求。

三、总结

简单的分栏需求,我们可以直接通过润乾报表设置栏数实现效果。

复杂的分栏需求实现时,先明确分栏的规则,然后用报表工具内置的函数或者配置实现这个规则,最后填充数据。有润乾报表在,你的想法我来实现。

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

这篇关于分栏报表制作攻略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225218

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

多线程解析报表

假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。 Way1 join import java.time.LocalTime;public class Main {public static void main(String[] args) thro

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

BIRT报表script

1.隔行高亮显示 1. 在布局(Layout)中,选择Table-Detail的行。如下图:   2. 然后选择Script,打开脚本窗口顶部的方法列表并选择onPrepare,如图所示。 var count=0;   3. 最后打开脚本窗口顶部的方法列表并选择 onCreate,如图所示: count++; if (count % 2 != 0) {   style.se

Birt报表开发实战

我就截图描述得了,没什么含金量,看图基本明白的。 1.开始 a.创建报表文件 b.数据源配置 c.配置数据集 2.网格报表 拖拉式操作,很方便 3.预览效果 其他报表的操作也基本不难,就不扯了! 2.级联参数 官方视频教程:http://demo.actuate.com/demos/cascade/cascade.html

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作