如何用FineReport制作一张报表(一)

1. 描述

这篇文档通过制作一张简单普通报表,让大家可以快速了解 FineReport 报表的制作流程。

1.1 报表设计流程图

1.2 第一张报表效果

在制作这张简单普通报表之前,我们先来看一下报表最终呈现出来的效果,然后我们再根据这个效果来设计报表的样式。

这张报表包含的功能模块:

  1. 控件面板:下拉框可以选择地区,点击查询按钮后,只查询出该地区对应的表格和柱形图数据。
  2. 表格:表格统计该地区下各销售员每个产品的总销量。
  3. 柱形图:柱形图将该地区下各销售员每个产品的总销量以图表的形式进行展示。

介绍完报表的实现效果,下面我们根据报表制作流程图来设计这张简单普通报表。

2. 制作步骤

2.1 新建数据连接

新建数据连接的目的是让 FineReport 设计器连接数据库,这样报表就可以在数据库中读取、写入或修改数据。

数据连接的方式有两种,分别是连接内置数据库和连接外置数据库。制作这张报表连接的是 FineReport 内置的 SQLite 类型的数据库

1)打开设计器,菜单栏选择服务器>定义数据连接。

2)弹出「定义数据连接」对话框,设计器已经默认连接了一个名为 FRDemo 的内置数据库,点击测试链接,弹出「连接成功」提示框,表示数据库 FRDemo 成功与设计器建立连接。接下来就可以从这个数据库中取数用于报表的设计。

2.2 新建报表类型

菜单栏选择文件>新建普通报表或者点击新建普通报表按钮,新建一张空白的普通报表。

 

2.3 新建数据集

数据集通过 SQL 查询语句从已经建立连接的数据库中取数,将数据以二维表的形式保存并显示在数据集管理面板处。简单而言数据集是报表设计时的直接数据来源。

数据集按照作用范围分为两种:服务器数据集和模板数据集,它们之间的区别大家可以参见对应文档中的说明。

我们制作的这张普通报表将新建两个模板数据集 ds1 和 ds2。

1)数据集管理面板选择模板数据集,点击上方的,在弹出的模板数据集类型选择框中点击数据库查询

 

2)在弹出的数据库查询对话框中,写入数据查询语句SELECT * FROM 销量,新建数据集ds1,查询并取出「销量」表中的所有数据。

 

 

 

3)同理,新建数据集 ds2,写入数据库查询语句SELECT 销售员,SUM(销量) AS 销售总量 FROM 销量 GROUP BY 销售员,查询并取出每个销售员的销售总量信息。

3)新建好数据集之后,可在数据集管理面板查看取出的数据。

至此报表的数据准备工作已经完成,下面对报表的样式进行设计。

2.4 报表设计

2.4.1 表格设计

1)样式设计

标题:合并 A1~D2 单元格,写入报表标题「地区销售概况」,设置标题为15号字体,字体加粗居中

 

单元格斜线:在一个单元格中用斜线分隔显示三个标题字段信息,合并 A3、B3 单元格,右击合并后的单元格,点击单元格元素>插入斜线。系统会弹出一个斜线编辑的对话框,在文本编辑框写入标题字段信息:产品|销售员|地区,可以通过添加空格来调整文字的位置。

边框:选中从 A1~D5 单元格,点击工具栏中的  按钮,在系统弹出的边框设置对话框中,同时添加内部和外部边框。

最终样式效果如下图所示:

2)数据绑定

将数据集中的数据列拖入到对应单元格中。

C5 单元格用于计算每个产品各自的总销量,所以要对 C4 单元格求和,选中 C5 单元格,点击上方快捷按钮中的插入公式,在弹出的公式编辑框中输入公式SUM(C4)

D5 单元格用于统计所有产品的总销量,所以要对 D4 单元格求和,同理,在 D5 单元格插入公式 SUM(D4)

数据绑定最终效果如下图所示:

3)属性设置

选中 C3 单元格,让产品字段的数据在表格中横向扩展,右边属性面板选择单元格属性>扩展>基本>扩展方向>横向

选中 C4 单元格,由于 A4、B4、C3 单元格的扩展已经确定了唯一的销量值,故 C4 单元格无需扩展,扩展方向为不扩展

选中 A1~D5 单元格,点击上方的居中按钮,将表格中的字体居中显示。

4)多数据集关联

当报表中存在不同数据集的数据时,需要通过添加数据过滤条件,建立起不同数据集之间的联系。

我们制作的这张报表的数据来源于两个不同的数据集 ds1 和 ds2,「销售员」字段是这两个数据集共有的字段,我们使用这个字段建立起他们之间的联系。

选中并双击 D4 单元格,弹出数据列对话框,选择过滤。给单元格添加一个普通条件,将 ds2 的销售员字段与 ds1 的销售员字段进行绑定,实现两个数据集之间的关联。

发布了45 篇原创文章 · 获赞 113 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/u014514254/article/details/102681819