FineReport-行式报表

一、简介

行式报表即清单式明细表,是最常见也是最简单的报表样式。

行式报表对数据进行纵向扩展,将数据展示为一个列表式的表格。如下表:

二、目标

1、Finereport制作报表;

2、单元格添加预警、间隔背景色;

3、筛选过滤;

三、操作步骤

1、Findreport制作报表

1.1、用于在 DBeaver 中创建表并插入数据到 MySQL 数据库

①创建表(CREATE TABLE)

复制代码
CREATE TABLE IF NOT EXISTS asset_info (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '序号',
    asset_code VARCHAR(20) NOT NULL UNIQUE COMMENT '资产编码',
    type VARCHAR(20) NOT NULL COMMENT '类型',
    brand VARCHAR(20) NOT NULL COMMENT '品牌',
    model VARCHAR(20) NOT NULL COMMENT '型号',
    config VARCHAR(20) NOT NULL COMMENT '配置',
    sn VARCHAR(20) NOT NULL COMMENT 'SN',
    user_name VARCHAR(10) NOT NULL COMMENT '使用人',
    status ENUM('使用', '闲置') NOT NULL COMMENT '状态',
    CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='资产信息表';

②插入数据(INSERT INTO)

复制代码
-- 插入数据
INSERT INTO asset_info (asset_code, type, brand, model, config, sn, user_name, status) VALUES
('XADN20250110', '笔记本电脑', '联想', 'Z490', '32+512G', 'JB00XX001', '张3', '使用'),
('XADN20250111', '笔记本电脑', '联想', 'Z490', '32+512G', 'JB00XX002', '张4', '使用'),
('XADN20250112', '笔记本电脑', '联想', 'Z490', '32+512G', 'JB00XX003', '张5', '闲置'),
('XADN20250113', '笔记本电脑', '联想', 'Z490', '32+512G', 'JB00XX004', '张6', '使用'),
('XADN20250114', '笔记本电脑', '联想', 'Z490', '32+512G', 'JB00XX005', '张7', '使用'),
('XADN20250115', '笔记本电脑', '联想', 'Z490', '32+512G', 'JB00XX006', '张8', '使用'),
('XADN20250116', '笔记本电脑', '联想', 'Y490', '32+1024G', 'JB00XX007', '张9', '使用'),
('XADN20250117', '笔记本电脑', '联想', 'Y490', '32+1024G', 'JB00XX008', '张10', '使用'),
('XADN20250118', '笔记本电脑', '联想', 'Y490', '32+1024G', 'JB00XX009', '张11', '闲置'),
('XADN20250119', '笔记本电脑', '联想', 'Y490', '32+1024G', 'JB00XX010', '张12', '使用'),
('XADN20250120', '笔记本电脑', '联想', 'Y490', '32+1024G', 'JB00XX011', '张13', '使用'),
('XADN20250121', '笔记本电脑', '惠普', '630G1', '32+1024G', 'JB00XX012', '张14', '使用'),
('XADN20250122', '笔记本电脑', '惠普', '630G1', '32+1024G', 'JB00XX013', '张15', '闲置'),
('XADN20250123', '笔记本电脑', '惠普', '630G1', '32+1024G', 'JB00XX014', '张16', '使用'),
('XADN20250124', '笔记本电脑', '惠普', '630G1', '32+1024G', 'JB00XX015', '张17', '使用'),
('XADN20250125', '笔记本电脑', '惠普', '630G1', '32+512G', 'JB00XX016', '张18', '闲置'),
('XADN20250126', '笔记本电脑', '惠普', '640G1', '32+512G', 'JB00XX017', '张19', '使用'),
('XADN20250127', '笔记本电脑', '惠普', '640G1', '32+512G', 'JB00XX018', '张20', '使用'),
('XADN20250128', '笔记本电脑', '惠普', '640G1', '32+512G', 'JB00XX019', '张21', '使用'),
('XADN20250129', '笔记本电脑', '惠普', '640G1', '32+512G', 'JB00XX020', '张22', '使用'),
('XADN20250130', '手机', '华为', 'P80', '16+256G', 'JB00XX021', '张23', '使用'),
('XADN20250131', '手机', '华为', 'P80', '16+256G', 'JB00XX022', '张24', '闲置'),
('XADN20250132', '手机', '华为', 'P80', '16+256G', 'JB00XX023', '张25', '使用'),
('XADN20250133', '手机', '华为', 'P70', '16+256G', 'JB00XX024', '张26', '使用'),
('XADN20250134', '手机', '华为', 'P70', '16+256G', 'JB00XX025', '张27', '使用'),
('XADN20250135', '手机', '华为', 'P70', '16+512G', 'JB00XX026', '张28', '使用'),
('XADN20250136', '手机', '苹果', '16', '16+256G', 'JB00XX027', '张29', '使用'),
('XADN20250137', '手机', '苹果', '16', '16+256G', 'JB00XX028', '张30', '闲置'),
('XADN20250138', '手机', '苹果', '16', '16+512G', 'JB00XX029', '张31', '使用'),
('XADN20250139', '手机', '苹果', '17', '16+512G', 'JB00XX030', '张32', '使用'),
('XADN20250140', '手机', '苹果', '17', '16+512G', 'JB00XX031', '张33', '使用'),
('XADN20250141', '台式电脑', 'DELL', 'T7820', '16+512G', 'JB00XX032', '张34', '闲置'),
('XADN20250142', '台式电脑', 'DELL', 'T7820', '16+512G', 'JB00XX033', '张35', '使用'),
('XADN20250143', '台式电脑', 'DELL', 'T7820', '16+512G', 'JB00XX034', '张36', '使用'),
('XADN20250144', '台式电脑', 'DELL', 'T7920', '16+512G', 'JB00XX035', '张37', '使用'),
('XADN20250145', '台式电脑', 'DELL', 'T7920', '16+512G', 'JB00XX036', '张38', '使用'),
('XADN20250146', '台式电脑', '联想', '小Y', '32+512G', 'JB00XX037', '张39', '闲置'),
('XADN20250147', '台式电脑', '联想', '小Y', '32+512G', 'JB00XX038', '张40', '使用'),
('XADN20250148', '台式电脑', '联想', '小Y', '32+512G', 'JB00XX039', '张41', '使用'),
('XADN20250149', '台式电脑', '海尔', 'M81', '32+512G', 'JB00XX040', '张42', '闲置'),
('XADN20250150', '台式电脑', '海尔', 'M91', '32+512G', 'JB00XX041', '张43', '使用');

1.2、数据准备

新建数据集 ds1,数据库查询对话框中写入 SQL 查询语句,取出「asset_info」表中所有数据,如下图所示:

1.3、 报表设计

1)报表主题选择「兼容主题」,如下图所示:

1)A1~I1 单元格写入表格标题信息,选中 A1~I1 单元格,右边属性面板选择「单元格属性>样式」,样式设置选择「跟随主题」。

2)将数据集中的相关数据列按照标题字段依次拖入到 A2~I2 单元格,选中 A2~I2 单元格,将字体「居中」。选中 A1~I2 单元格,给表格整体添加预定义样式默认的天蓝色内外框。

注:由于单元格扩展默认为纵向扩展,因此将数据集中数据列拖入单元格后默认是纵向扩展的,不需要再对单元格扩展属性进行设置。

1.4、预览

2、单元格添加预警、间隔背景色;

2.1、 单元格预警

在满足一定条件下改变单元格的格式或者显示成不同的值。

单元格背景色间隔显示,型号等于P80时,单元格内容红色预警。

通过对单元格添加条件属性,可以实现该效果。

选中单元格后,点击「条件属性>添加条件」,可添加条件属性。如下图所示:

预览:

2.2、间隔背景色

选中 A2 单元格,在右侧属性面板中选择「条件属性」,添加一个条件属性,属性选择「背景」,编辑选择「当前行」,公式类型选择「公式」,添加公式 row()%2==0,row() 为获取当前行号,被 2 整除即偶数行有背景。如下图所示:

预览:

3、筛选过滤;

希望从大量的数据当中,获取到符合条件的数据。

3.1、单选

通过查询框筛选过滤实现。定义数据集时,在 SQL 语句中添加自定义参数${a},即可在参数面板中添加相关参数控件进行筛选过滤。

1)打开准备的模板,修改 ds1 语句为:SELECT * FROM `asset_info` where brand= '${a}'如下图所示:

需注意:SQL语句中的where后面的值必须为表头中包含的字段,否则需要重新定义导致预览失败

2)编辑参数面板,点击「全部添加」按钮。如下图所示:

3)点击右侧的「控件设置」,选中「Labela」,选择「属性」,修改控件值为字符串「品牌」。如下图所示:

4)点击参数面板参数 a的工具按钮,选择下拉框控件。如下图所示:

5)点击右侧的「控件设置」,选中「a」,选择「属性」,设置数据字典为「自定义」,实际值分别为具体品牌,显示值与实际值相同。如下图所示:

预览:

3.2、多选

用户可以在参数面板中:

  • 选择品牌(如"联想")
  • 选择类型(如"笔记本电脑")
  • 选择状态(如"使用")
  • 点击"查询",只显示匹配的数据

支持:单选、多选、留空(不筛选)


1)修改 SQL 语句(核心)

表是 asset_info,字段包括:

  • brand(品牌)
  • type(类型)
  • status(状态)

推荐写法:使用 LIKE + 参数默认为空(兼容留空)

复制代码
SELECT * FROM `asset_info`
WHERE 1=1
    AND (品牌 = '${brand}' OR '${brand}' IS NULL OR '${brand}' = '')
    AND (类型 = '${type}' OR '${type}' IS NULL OR '${type}' = '')
    AND (状态 = '${status}' OR '${status}' IS NULL OR '${status}' = '')

说明:

  1. **SELECT ***:展示表的所有字段

  2. WHERE 1=1:便于动态拼接条件

  3. 参数化查询 :使用 ${参数名} 格式,这是帆软设计器的参数语法

  4. 条件逻辑

    • 精确匹配:使用 = 运算符

    • 模糊匹配:使用 LIKE '%值%' 格式

    • 空值处理:OR '${参数}' IS NULL OR '${参数}' = '' 确保参数为空时不过滤数据

✅避免函数(关键!)

FineReport 只会在「直接出现在 WHERE 条件中的 $param」时自动识别参数。

一旦 $param 被包裹在 CONCAT()、IF()、CASE 等函数内部,很多版本(尤其是 v11 以下)就无法识别它为参数!

所以:

-- ❌ FineReport 不识别(因为 $brand 在 CONCAT 里面)

WHERE brand LIKE CONCAT('%', '$brand', '%')

但:

-- ✅ FineReport 能识别($brand 直接出现)

WHERE brand = '$brand'


2)编辑参数面板,点击「全部添加」按钮。如下图所示:

3)点击右侧的「控件设置」,选中「Labela」,选择「属性」,修改控件值为字符串「品牌」。如下图所示:

4)点击参数面板参数的工具按钮,选择下拉框控件。如下图所示:

5)点击右侧的「控件设置」,选中「状态/品牌/类型」,选择「属性」,设置数据字典为[数据库表」。如下图所示:​​​​​​​

预览:

报错!!!

修改原SQL语句中品牌、状态、类型为表中含有的brand、type、status,就好了,不用真的给参数赋值。

相关推荐
aimmon2 个月前
FineReport自定义登录系统技术
finebi·bi·finereport·自定义登录
阿年、嗯啊5 个月前
FineReport模板认证找不到模板
finereport·集群架构·模板认证找不到模板·sftp服务器·应用节点登录sftp账户被锁定·ssh远程登录安全校验
次世代数据技术2 年前
Finereport11 类Excel筛选
finereport
他们叫我技术总监2 年前
帆软BI开发-Day2-趋势图的多种变形
信息可视化·oracle·finebi·finereport