当前位置:首页  >  表格软件专题  > 

详述自定义报表的制作方法与技巧

作者:finereport

浏览:26,227

发布时间:2023.7.30

灵活性是衡量自定义报表软件功能的基本尺度,作为一款自定义功能备受推崇的报表软件,FineReport在报表的自定义性上有什么特殊表现,用FineReport制作自定义报表又需要怎样的步骤呢?下面,让我们深度解读这一款自定义报表工具——FineReport。

用FineReport制作自定义报表需要通过以下四个步骤:

1、新建数据连接:在制作模板之前首先要确保设计者知道存储数据的数据库类型、数据库地址、访问数据库的用户名密码,然后在FineReport设计器中新建一个数据连接,建立数据库与设计器的交互桥梁;

2、新建模板与数据集:数据连接创建好之后,就需要进行模板的添加了,数据连接是用于整个工程的,并没有实质的将数据从数据库中取出来,故还需要在特定模板中新建数据集,通过数据连接从数据库中取数;

3、模板设计:数据准备完成之后,就是进行模板的设计了。自定义模板设计又分为报表设计、参数设计、图表设计和填报设计四个部分,这四个部分是FineReport模板的几大使用方式,报表设计是纯粹的数据展示,参数设计是动态查询数据,图表设计是使用图表来展示数据,填报设计是录入数据,将数据写入数据库中,根据实际情况确定使用哪一张使用方式,或者联合使用哪几种使用方式;
模板预览:模板设计完成之后,保存模板至工程目录下面,即可预览在web端查看模板效果。

数据连接

制作报表前首先需要定义数据来源,实际用户系统最长见的就是数据保存在数据库中,并且在不断更新中,使用数据库数据来制作报表,并且报表内容会随着数据库的更新而更新。

FineReport天然支持这一点,只需要在服务器>定义数据连接中定义需要连接的数据库,就可以自定义查询语句查询出需要的数据,从而制作自定义报表。

数据连接存储在工程中,当用户执行需要访问数据库的操作时这些连接被激活。

一个报表工程可以定义多个数据库连接,所有信息都保存在appName/WEB-INF/resources/datasource.xml配置文件中。

可以通过JDBC、JNDI、SAP、XMLA和FineBI五种方式自定义数据库连接,当报表执行时需要访问数据库时这些连接才会被激活。
自定义数据库连接

免费试用FineReport

JDBC连接数据库

JDBC (Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。

JNDI连接数据库

JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。

通过JNDI方式定义数据连接,首先在应用服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,选择连接数据库所需要的驱动程序等操作,即可成功使用JNDI连接,连接步骤如下:

设计器中连接JNDI

新建数据库,选择JNDI方式连接

编辑JNDI名字和上下文内容等

输入JNDI的名字与Web应用定义的JNDI名字相同,并且在上下文内选择相应Web服务器的驱动程序及连接数据库的URL,如下图:
自定义报表
各种Web服务器的JNDI数据源调用方式有所区别

其他属性

JNDI连接数据源还有一些其他属性可以设置。点击上图右侧的其他属性即可弹出设置界面:
其他属性

SAP连接数据库

与SAP系统进行连接,需要导入SAP接口包和本地库,并确保运行的JVM能够找到接口包和本地库。
SAP连接数据库

主机名:局域网中已配置的SAP的主机名称,也可以写该机器的IP地址。

System Number:SAP系统中设置的属性,用于交互的端口号,一般来说是00,具体根据SAP系统来定。

客户端:SAP 系统管理的业务和数据的最大有效集合,也是SAP系统的一个属性,具体根据SAP系统决定。

点击测试连接,如果提示连接成功则表示数据连接新建好了,点击确定退出数据连接设置面板。

连接成功之后就可以在服务器数据集、模板数据集等地方使用该数据连接,通过该数据连接从SAP系统中取数。

XMLA数据连接

多维数据库(Multi Dimensional Database,MDD),简单来说,就是将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据。多维数据库增加了一个时间维,与关系数据库相比,它的优势在于可以提高数据处理速度,加快反应时间,提高查询效率。

FineReport提供了XMLA数据连接的方式来与多维数据库进行连接,建立桥梁,通过该桥梁,FineReport可以轻松获取到多维数据库中的数据转换为二维表进行模板制作,数据分析。

FineReport多维数据库XMLA数据连接支持市场上主流的SQLServer Analysis Services、Oracle Essbase和SAP HANA等等数据库类型。
下面我们一一讲解各类型多维数据库的自定义连接方式。

SQLServer Analysis Services

SQLServer Analysis Services简称为SSAS,是指在内置计算支持的单个统一逻辑模型中,设计、创建和管理包含来自多个数据源(如关系数据库)的详细信息和聚合数据的多维结构。

XMLA数据连接参数配置界面上的数据库类型选择SQLServer Analysis Services,在URL输入该数据库所在站点地址,用户名及密码,然后点击数据库标签后面的下拉选项,FineReport会自动将该站点下面的所有多维数据库加载显示在下拉列表中,选中需要连接的数据库即可,如下图:
XMLA数据连接

点击测试连接即表示连接成功。

Oracle Essbase

数据库类型选择Oracle Essbase,在URL输入该数据库所在站点地址,用户名及密码,然后点击数据库标签后面的下拉选项,FineReport会自动将该站点下面的所有多维数据库加载显示在下拉列表中,选中需要连接的数据库即可,如下图:

Oracle Essbase

SAP HANA

数据库类型选择SAP HANA,在URL输入该数据库所在站点地址,用户名及密码,然后点击数据库标签后面的下拉选项,FineReport会自动将该站点下面的所有多维数据库加载显示在下拉列表中,选中需要连接的数据库即可,如下图:

SAP HANA

XMLA数据连接建立好之后,就可以添加多维数据库XMLA数据集。

FineBI数据连接

FineBI是帆软公司自主研发的一款商业智能软件,其在使用过程中也会生成cube。FineReport提供了单独的FineBI连接方式,为FineReport和FineBI之间搭建桥梁。

打开设计器,点击服务器>定义数据连接,新增一个FineBI数据连接,在右侧的面板中输入相应参数配置,如下图:

FineBI数据连接

配置完成之后,点击测试连接,连接成功即可。

FIneBI数据连接与XMLA数据连接类似,其添加数据集时,需要使用多维数据库。

数据集

数据集是指从数据库中将数据取出来,可直接应用于模板设计的数据展现集合,数据集按照其使用范围可以分为服务器数据集,模板数据集两种。

FineReport提供了多种数据集定义方式满足自定义报表数据集的需要。服务器数据集在服务器>服务器数据集处定义,适用于整个服务器上所有报表的数据集,其类型分为:数据库查询,内置数据集,文件数据集,SAP数据集,存储过程,多维数据库、关联数据集以及树数据集。
数据集

我们可以在在模板>模板数据集处或者数据集窗口处进行模板数据集自定义,此处数据集只适用于单张模板的数据集,具体类型同服务器数据集相同。

模板数据集只对当前模板有效。

在设计器的数据窗口会显示定义的所有数据集,包括模板数据集和服务器数据集,如下图:
设计器的数据窗口

数据集窗口可以对模板数据集进行增删查询,但是对服务器数据集及存储过程数据集只能进行预览。

数据库查询

数据库查询定义数据集是FineReport自定义报表功能中一种比较常见的定义数据集方式。

SQL查询是指从定义好的数据库连接中,也就是数据源中使用SQL语句来选择我们所需要的数据字段,一般是直接对数据源中的数据库表直接进行操作。在设计器中我们把数据源分为两种,一种是服务器数据集,一种是报表数据集,两者被引用的范围不一样。

使用sql,选择好数据源后,我们就可以使用SQL对数据库表进行操作,选中查询编辑器,在其中输入SQL语句即可进行数据集定义。

内置数据集

内置数据集可分为服务器内置数据集和报表内置数据集。服务器内置数据集,是指在服务器数据集中新建一个类似数据库表的原表,可作为服务器的数据源来设计报表。

自定义添加内置数据集的方法为:

点击模板数据集下面的加号,选择内置数据集。

设置完列名和数据类型后,点击插入行删除行,可以对数据进行操作。

设置完后,可以看到模板数据集中增加了一个数据集。

文件数据集

文件数据集是指以txt文本文件、Excel文件和XML文件中的数据为数据集,将这些文件中的数据加载进行,并以二维表的结构展示在数据集当中,以供模板使用。

SAP数据集

在SAP数据连接中建立好SAP的一个连接SAP2,接下来就可以通过该数据连接建立SAP数据集了,如果没有建立数据连接,请先建立一个SAP数据连接

新建好数据连接之后,再在模板中添加一个模板数据集或者是服务器数据集,这里我们以模板数据集为例,直接在模板的数据库查询面板中,点击按钮,选择SAP数据集,或者是点击模板>模板数据集,选择SAP数据集,进入SAP数据集配置界面:
SAP数据连接

SAP数据取数的方式有三种:自定义、简单通用查询、通用查询

存储过程

存储过程,就是直接将存储过程作为数据集,不需要在数据库查询处去调用存储过程。FineReport支持全部数据库的存储过程作为数据集并且定义方法都相同。

点击模板>模板数据集或者直接在数据集面板中,点击“+”,切换到oracle数据库所在的数据连接,双击所需要添加的存储过程,如下图:
存储过程

多维数据库

FineReport连接多维数据库,首先要通过数据连接将多维数据库与FineReport连接起来,也就是我们前面所说的XMLA数据连接,那么下面就需要在数据连接的基础上新建多维数据库XMLA数据集,用于模板设计。

新建好XMLA数据连接之后,在模板数据集面板中点击添加按钮,新建一个多维数据库,进入多维数据库XMLA数据集配置界面,XMLA数据集查询取数方式包括简单通用查询和自定义MDX查询两种,如下图
多维数据库

关联数据集

使用FineReport的自定义报表功能进行关联数据集的使用场景:

情形一:一张模板定义了两个数据集ds1和ds2,分别是从oracle和sqlserver中取数,想通过参数控制报表数据是从ds1取的还是ds2取的;

情形二:有一张模板,里面的样式都是一样的,但是数据都是取自最终客户各个子公司自身的数据库,要求各子公司访问的是各子公司自己的数据;

情形三:数据集ds1、ds2来自不同的数据源,结构相同,需要将量表中的数据合并起来。

以上情形都可以使用关联数据集来实现,下面我们就以情形一为例说明关联数据集的使用方法。

定义数据集ds1和ds2,分别来自数据库oracle及sqlserver;

在数据集面板中新建>关联数据集;

此时将会列出该报表所有可用的报表数据集、服务器数据集和存储过程,勾选需要的数据集,如这里的ds1、ds2;

并且添加条件,如ds1对应的条件是$db="oracle",即当参数db为oracle的时候就用ds1;

同样可以给ds2添加条件$db="sqlserver",当参数db为sqlserver的时候就用ds2。

关联数据集

树数据集

在数据库中常常可以看到一种表结构,其表中包含了id与parentid两个字段或者某一个字段的长度有一定规律,这种表结构就存在着一种层级关系,通过下拉树或者折叠树来显示层级结构,比如说部门的层级结构,如下图:
树数据集

那么如何通过将数据表中的二维结构展现出这种树状的层级关系呢?FineReport提供了树数据集的概念,为控件绑定树数据集,web端查看时就会自动生成树形层级结构。

在数据集面板中新建一个数据集ds1:SELECT * FROM [公司部门];

在上面的ds1数据集的基础上创建一个树数据集,将公司部门的层级结构显示出来。

在数据集面板中点击添加按钮,选择树数据集,

树数据集来源于上面创建的ds1数据集,公司部门中有一个部门ID和上级ID,故可以使用依赖所选数据集的父标记字段构建树,如下图:
依赖所选数据集的父标记字段构建树

如果数据表中的字段没有父级字段,而是通过字段的长度来分辨其级别,如下图,公司部门的部门ID字段,其字段长度不一致,但是存在一定的规律,截止到第一个数字表示第一层级部门的部门ID,截止到第二个数字表示第二层级部门的部门ID,以此类推

我们再新建一个数据集,其数据集来源仍然是ds1,选择依赖所选数据集的标记字段的长度构建树,原始标记字段为部门ID,如下图:
构建树

FineReport会自动识别部门ID字段里面的规律,效果与上面依赖所选数据集的父标记字段构建树的效果一致

模板设计

模板设计充分体现了FineReport报表强大的自定义报表功能。FineReport提供了丰富的控件、参数、接口等因素支持自定义报表设计,满足填报、报表展示等方面的自定义需求。

单元格属性自定义

自定义扩展属性

在自定义报表单元格属性表-扩展属性中,可以自定义单元格的父格、伸展性以及扩展后的数据伸展方向。
自定义扩展属性

自定义单元格样式

在单元格属性表-样式自定义中,可以自定义单元格样式,进行单元格的格式、对齐、字体、边框、背景等的设置。

自定义单元格样式

在自定义样式-格式中可以自定义数据的显示形态和显示格式,进行常规、数字、货币、百分比、科学计数、日期型、时间型、文本型等格式的设置

自定义样式-格式

在自定义样式-对齐中可以自定义单元格中数据的对其方式、图片布局、文本控制、文本方向、缩进、间距等的设置。

自定义样式-对齐

在自定义样式-字体中可以自定义单元格中数据的字体大小、颜色、斜体、加粗、下划线、删除线、阴影、上下标的设置

自定义样式-字体

在自定义样式-边框中可以自定义单元格的边框,设置单元格的内外边框的样式和颜色。

自定义样式-边框

在自定义样式-背景中可以自定义单元格的背景,单元格的背景可以被设置为:无背景、颜色、纹理、图案、图片。渐变色等。

自定义样式-背景

自定义单元格形态

在单元格属性表-形态中,可以自定义形态设置,进行数据字典、条形码、公式形态、金额线等定义。
单元格属性表-形态

在单元格属性表-形态-数据字典中,可以自定义单元格数据的数据字典,进行包括数据类型、数据库、模式、数据库表、实际值和显示值的设置。
单元格属性表-形态-数据字典

在单元格属性表-形态-条形码中,可以自定义单元格中条形码的显示形态,设置条形码的显示类型、高度宽度和文本形态。

单元格属性表-形态-条形码

在单元格属性表-形态-公式形态中,可以自定义单元格的公式,FineReport提供了多种函数类型、函数名和变量,方便用户查找常用公式。FineReport提供的公式包括了几乎所有的常用公式,例如比较常见的求和、平均值、计数、累计、时间、数组等函数,以及报表函数、逻辑函数、层次坐标函数等。

单元格属性表-形态-公式形态

在单元格属性表-形态-金额线中,可以自定义金额线的样式,这是对于金额数字的专有定义设置,在这里可以设置金额的整数部分和小数部分的位数。

单元格属性表-形态-金额线

自定义单元格其他属性

单元格属性表-其他属性中可进行行高、列宽等的设置,以及打印/导出的单元格内容和背景的设置,分页的定义也在这里进行,自定义报表的分页形式:行前分页、行后分页、列前分页、列后分页。
自定义单元格其他属性

自定义报表样式

自定义报表样式

FineReport报表设计器自身提供了多种自定义报表样式的便捷按钮,在这里可以随便选中行和列进行字体、颜色、报表前景、报表后景、对齐方式、图表、图片、悬浮方式的设置,可以进行合并和拆分单元格操作,进行数据列、普通文本、斜线、子报表的插入等。
在FineReport中还可以自定义冻结的行和列,即设置重复的行或列,设置成功后会有一个“H”的标志。

便捷按钮

选中需要自定义的区域,右键可以进行单元格元素、样式、控件、扩展属性、形态、条件属性、超级链接等的设置。
自定义区域

参数自定义

在FineReport中可以进行参数自定义以更好地辅助报表自定义设置。参数界面设置
如下:
参数界面设置

还可以给参数type的下拉框控件增加编辑后事件:点击参数type的下拉框控件,在属性表的下方选择事件面板,点击增加编辑后事件。

FineReport提供了多种控件帮助用户进行参数自定义设置,参数表单页面控件类型包括以下几种:

文本、标签、按钮、下拉框、下拉复选框、日期、复选框、数字、下拉树、视图树、单选按钮组、复选框组、文件、文本域、密码、列表、网页框和数据表。

如下图,在参数界面上添加一个控件:
参数界面设置添加控件

参数表单页面控件类型包括以下几种:

文本、标签、按钮、下拉框、下拉复选框、日期、复选框、数字、下拉树、视图树、单选按钮组、复选框组、文件、文本域、密码、列表、网页框和数据表。

控件属性可以设置控件名称,是否可用可见,样式等等。基于控件的功能不同,有些属性是专有的,有些属性是通用的。

通用属性是指所有控件均有的属性,下面用表格详细罗列出来所有控件的通用属性,使用意义以及该属性是否可以同时在填报控件和参数(表单)控件中使用

通用属性

在参数界面面板中,还可以设置参数在BS端的高度:

设置参数在BS端的高度

在我们的页面中,参数界面是可以动态的显示和隐藏的,效果如下图
参数界面动态的显示隐藏

填报自定义

FineReport提供了多种填报控件帮助用户进行自定义填报设置。填报自定义的控件和参数控件种类基本相同,只是用法不同而已。在控件种类上,填报页面少了标签控件和数据表控件,如下图所示:
填报自定
FineReport提供了多种数据提交校验方式,如内置校验、填报自定义校验、强制提交、使用JS脚本进行校验等
数据提交校验方式
数据提交校验方式2

在填报中还可以自定义填报样式,如填报冻结、填报居中等,进行填报功能定义,实现填报联动、多个单元绑定一个字段、动态改变填报数据库表。空白数据不入库、上传文件至数据库并下载、自定义添加删除行按钮等。

图表自定义

图表标题自定义

我们可以点击图表工具栏中的图表属性表-样式>标题,来设置标题样式,如下图:

设置标题样式

如上图我们可以设置标题是否可见,若显示标题的话可以设置标题的内容,且标题内容可以是固定的文本,如上图,直接在文本框中输入标题,也可以使用公式定义动态的标题。

点击公式按钮,便可以根据需要定义动态的标题了,通常与参数结合定义,如下图:

与参数结合定义

若地区参数值为“华北”,那么图表的标题就会动态的显示为“华北地区产品销量”。

可以设置标题文本的字体、字形、字号、颜色,如设置为“宋体、加粗、12号”,则效果如下:

设置标题文本效果

可以设置标题左对齐,居中,右对齐,默认对齐方式为居中。

可以标题添加边框,并设置边框样式,包括线型,颜色,是否圆角边框,如:设置标题边框我细线型,颜色为红色,使用圆角边框,效果如下:

设置边框样式

对标题的背景进行设置,如设置标题背景为黄色,透明度为50%,效果如下:

标题背景

图表图例自定义

我们可以点击图表属性面板中的图表属性表-样式>图例,来设置图例样式,如下图:

图表图例自定义

如上图可以自定义是否显示图例,默认情况是显示图例的。

可以设置图例标签文字的字体、字形、字号。

可以设置图例显示在图表的哪个位置,有靠上,靠下,靠左,靠右四个选项,默认为靠右。设置图例的边框样式,默认为无边框,形同于标题边框。设置图例区域的背景以及透明度,形同于标题背景。

图表系列

像柱形图中的每一个柱子、折线图中的每条折线等都表示一个系列,我们可以点击图表工具栏中图表属性表-样式>系列来设置系列样式

系列的配色可在下拉框中选择图表预定义样式中设置好的所有样式,默认为图表预定义样式中的默认选项,也可以自定义。

图表标签

标签是指在web端查看图表时,图表系列上面的显示内容、格式和位置。选中图表,点击图表属性表-样式>标签,勾选标签前面的复选框,勾选需要显示的内容,并设置格式,如下图:

图表标签自定义

图表坐标轴自定义

图表中包含两种坐标轴:分类轴与值轴,如下图:

图表坐标轴自定义

分类轴:非数值,反应数据是按照什么分类显示的。

值轴:数值,反应了系列值的大小。非组合图只有一条主值轴;组合图表可以根据需要定义第二值轴。

由于分类轴是非数值数据,而值轴是数值数据,因此这两种坐标轴有着不同的属性。

自定义图表背景

如下图,一张图表有四个不同区域的概念:整个图表区域(黑色框表示的范围)、绘图区(天蓝色背景表示的范围)、标题区(红色背景表示的范围)及图例区(红色虚线框表示的范围)。

自定义图表背景

我们可以点击图表属性表的图表属性表-样式,来对这四个区域分别设置其边框、背景等属性,标题背景在标题标签里面,图例背景在图例里面,绘图区和图表区在背景里面

图表数据表自定义

若用户相同时查看数据和图表,可以通过对数据表进行设置,而不用将数据拖曳至单元格中,并且数据与分类轴是一一对应的,方便用户查看数据。

选中图表,点击图表属性面板中的图表属性表-样式>数据表,勾选数据表,即可在图表下方显示数据表,如下图:

图表数据表自定义
图表分析线自定义
在FineReport中可以自定义趋势线、警戒线来实现数据提示。

定义趋势线来查看数据的走势;
自定义趋势线
给图表添加多条警戒线来实现预警效果:
自定义警戒线

报表自定义功能综合使用示例

示例1

综合使用示例1

示例2

综合使用示例2

报表工具产品更多介绍:www.finereport.com


在线客服

电话咨询

技术问题

投诉入口