积木报表详细入门教程
一、JimuReport部署入门介绍
积木报表可以通过源码部署、SpringBoot集成、Docker部署以及各种成熟框架部署,具体可查看积木官方文档
当前采用源码部署,首先下载Jimureport-example-1.5.6
1 jimureport-example目录查看
使用IDEA启动打开后如下:
db目录下是数据库文件
src目录下是开发文件

2 初始化数据库
可以看到db目录下,有一个sql文件,这个就是使用积木报表的数据库文件,在数据库中初始化一下即可。
查看这个SQL文件,可以看到是创建jimureport
数据库,以及该数据库下的需要用到的表

将SQL文件上传到数据库服务器上,并加载到数据库中
sh
[root@zxy ~]# mysql -uroot -p -h localhost < jimureport.mysql5.7.create.sql
[root@zxy ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 171
Server version: 5.7.41 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use jimureport;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-------------------------+
| Tables_in_jimureport |
+-------------------------+
| jimu_dict |
| jimu_dict_item |
| jimu_report |
| jimu_report_data_source |
| jimu_report_db |
| jimu_report_db_field |
| jimu_report_db_param |
| jimu_report_link |
| jimu_report_map |
| jimu_report_share |
| rep_demo_dxtj |
| rep_demo_employee |
| rep_demo_gongsi |
| rep_demo_jianpiao |
| rep_demo_xiaoshou |
| tmp_report_data_1 |
| tmp_report_data_income |
+-------------------------+
17 rows in set (0.00 sec)
3 修改数据库配置
修改application.yml配置文件
主要修改datasource处数据库的连接数据

4 启动
启动主类JimuReportApplication

启动成功后,可以通过如下URL访问积木报表

5 积木报表工作台
访问URL后,直接进入到积木报表工作台
主要分为以下模块:
-
报表管理模块
报表管理模块有数据报表、图形报表、打印设计等,可以根据需求设计不同的报表类型
-
报表设计模块
报表设计模块有新建报表项和报表查看项。在已生成的报表下列可以看到有五个小项目,从左到右依次是预览、收藏、删除、复制、分享
-
模板案例模块
模板案例模块主要是积木报表提供的报表模板,当然也可以将自己设计的模板保存称模板。不过需要注意的是,将你设计的报表保存成模板时,在报表设计模板就找不到该报表。类似于移动报表的形式。

二、JimuReport开发配置入门介绍
1 数据库兼容
目前积木报表支持以下数据库连接方式,需要使用到的数据库,只需要在POM文件中添加对应得依赖即可
数据库 | 支持 |
---|---|
MySQL | √ |
Oracle、Oracle9i | √ |
SqlServer、SqlServer2012 | √ |
PostgreSQL | √ |
DB2、Informix | √ |
MariaDB | √ |
SQLite、Hsqldb、Derby、H2 | √ |
达梦、人大金仓、神通 | √ |
华为高斯、虚谷、瀚高数据库 | √ |
阿里云PolarDB、PPAS、HerdDB | √ |
Hive、HBase、CouchBase | × |
2 yml文件介绍
sh
server:
# 服务端口
port: 8085
spring:
#数据库
datasource:
url: jdbc:mysql://${MYSQL-HOST:127.0.0.1}:${MYSQL-PORT:3306}/${MYSQL-DB:jimureport}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
# hikari连接池
hikari:
# 设置数据库连接池
connection-timeout: 100000
# 池中最小连接数
minimum-idle: 5
# 池中最大连接数
maximum-pool-size: 15
# 连接最长闲置时间
idle-timeout: 30000
# 池中连接最长声明周期
max-lifetime: 30000
# 连接池名称
pool-name: MyHikari
jeecg :
jmreport:
# 只看自己创建的数据
saas: false
# 是否开启租户
openTenant: false
# 是否禁止导出PDF和图片按钮
exportDisabled: false
# 是否自动保存
autoSave: true
# 自动保存时间间隔毫秒
interval: 20000
# 列索引
col: 100
# 自定义项目前缀
#customPrePath:
#自定义API接口前缀 #{api_base_path}的值
#apiBasePath: http://localhost:8080/jeecg-boot
# 预览分页自定义
pageSize:
- 10
- 20
- 30
- 40
# 打印纸张自定义
printPaper:
- title: A5纸
size:
- 148
- 210
- title: A4纸
size:
- 250
- 353
# 接口超时设置
connect-timeout: 300000
# Excel导出模式,fast(快)、primary(精致模式),默认是fast
export-excel-pattern: fast
# excel导出每个sheet页得行数,每个sheet页最大1048576
page-size-number: 100000
# excel样式超过多少行显示默认样式
excel-style-row: 1000
# 设计页面表格的线是否显示,默认true
line: true
# 不写字典情况下,下拉框默认显示条数 1.4.2版本后丢弃
select-show-total: 10
# 是否启用签名校验,默认不开启,开启后会对执行SQL的接口进行参数校验
safeMode: true
# 预览页面的工具条 是否显示 默认true
viewToolvar: true
# 文件上传三种模式
# 1,local本地存储,需要配置存储路径
# 2.alioss 阿里云线上存储
# 3.minio MinIo线上存储
uploadType: local
# 本地存储路径配置
path :
upload: /opt/upload
# 阿里云存储
oss:
endpoint: ??
accessKey: ??
secretKey: ??
bucketName: jimureport
# minio存储
minio:
minio_url: http://minio.jeecg.com
minio_name: ??
minio_pass: ??
bucketName: ??
#输出sql日志
logging:
level:
org.jeecg.modules.jmreport : info
3 系统变量
系统变量是预置的一些和当前登录人相关的变量:比如:用户账户、用户部门编码、以及在使用jeecgboot集成报表时支持自定义变量名。
sh
#{sysUserCode} 做为一个系统变量,这里sysUserCode是当前登录人。
例如:
select * from table where create_by='#{sysUserCode}'。
属性名 | 描述 | 用法 |
---|---|---|
sysUserCode | 当前登录人账号 V1.0.10+ |
#{sysUserCode} |
sysDate | 当前日期的字符串 格式为 yyyy-MM-dd V1.3.3-beta+ |
#{sysDate} |
sysDateTime | 当前时间的字符串 格式为yyyy-MM-dd HH:mm:ss V1.3.3-beta+ |
#{sysDateTime} |
三、报表设计
1 新建报表
1.1 创建新的数据报表
以数据报表为例,简单介绍创建报表的过程

1.2 进入报表设计页面
如下图可见,主要分为四个模块:
-
模块一(左)
- 数据集管理
- 报表信息
- 数据字典
-
模块二(右)
这部分是对数据报表的进一步优化
-
模块三(上)
这些功能跟excel的功能很像
-
模块四(中)
报表设计也是报表展示区域

1.3 连接数据库
1.3.1 点击SQL数据集
可以看到在数据集管理处有SQL数据集、API数据集、JavaBean数据集、JSON数据集等,这是获取数据的四种方式,可以根据项目实际情况选择合适的数据集管理方式。

1.3.2 维护数据集

1.3.3 数据源维护
上一步点击维护数据集后,会进入到如下页面,可以看到这里有积木报表提供的初始化数据集,可以在其基础上编辑,也可以选择新增数据源

1.3.4 配置数据源
自定义数据源名称,适当的名称可以区分业务
根据自己数据库选择对应的数据源类型
一般情况下选择数据源类型后,会自动匹配对应的驱动类,也可自行修改
数据源地址,主要修改数据库的主机名、端口、以及取数据的数据库名称
最后填写好用户名、密码后,即可点击密码旁的测试
测试成功后,会有如下的"数据库连接成功"提示
确定后,返回即可

1.4 查询数据集
如下图可见,主要分为三个模块:
-
模块一(左)
选择用到的数据库后,系统会自动列举该数据库中的表,可以选中表进行数据查询,也可以在报表SQL栏自定义SQL
-
模块二(上)
模块主要有编码、名称、是否集合、是否分页、报表SQL、SQL解析
-
编码尽量是唯一的,名称可以自定义
-
选中是否集合,代表有多条数据
-
选择是否分页后,当本页面无法显示所有数据时,会自动分页
-
在报表SQL处填写查询数据语句
-
最后点击SQL解析
-
-
模块三(下)
模块主要有报表字段明细、报表参数、数据预览等
- 报表字段明细是查询的结果字段
- 报表参数是当SQL语句中有参数的时候,需要用到
- 数据预览可以预览当前查询结果

1.4.1 报表字段明细
-
字段名
这是根据SQL语句查询的结果字段
-
排序
给字段的排序,对报表结果没影响,但是当设置多个查询框的时候,它可以决定查询框依次展示的顺序
-
字段文本
可以给字段做注释,方便查看,同样在设置查询框的时候,提示语句会是字段文本内容
-
类型
有数值类型、字符类型、日期类型。最主要是日期类型,当该字段是日期时,如果你想设置范围查询(比如我想查询该日期2023-01-01到2023-02-02期间数据),那么该字段的类型应该设置为日期类型
-
字典code
可以填写自定义的字典,比如数据库有status字段,值为0,1,2。那么可以设置字典,映射对应的含义。
-
查询
选中即代表对该字段设置查询
-
查询模式
在查询模式中,最常用的是输入框、下拉单选、下拉多选、范围查询、模糊查询
-
输入框
不支持模糊搜索
-
下拉单选
-
下拉多选
-
范围查询
可用于设置时间字段,时间范围查询
-
模糊查询
支持模糊查询
-
下拉树
-
自定义下拉框
-
-
查询默认值
-
查询日期格式
日期格式如下,可以根据需求格式化日期
shyyyy-MM-dd HH:mm:ss
-
参数配置
下拉单选默认只能显示几个,如果需要显示更多的话,可以在参数配置中填写如下
sh{'selectSearchPageSize':20}

1.4.2 报表参数
在报表SQL中如果添加参数判断语句,则报表参数处会有如下选项框,跟报表字段明细处相同
在如下的操作中,暂时不使用参数

1.4.3 数据预览
数据预览后点击确定即可

1.5 报表设计
上一步确定后,即可进入如下页面,进行报表设计

1.5.1 报表头设计
首先最下面有滚动条,当字段过多时,可以滑动即可
其次最右边的框可能会阻挡视线,在用不到的时候收缩即可
然后根据已有字段,在Excel框中手动填入字段名称即可

1.5.2 数据源绑定
在左侧就是我们需要绑定的数据集,可使用鼠标拖动放置到对应的excel单元格中即可

1.5.3 数据源绑定后
数据集绑定后就是如下页面

1.5.3 报表保存
点击保存后,首次保存需要添加报表名称,以及类型。
之后就会在如下图的左侧栏目显示对应的信息
填写后,点击小眼睛预览即可

1.5.4 报表预览
现在就可以看到数据结果了,从如下我们可以看出
-
1.因为我们在查询数据集的时候,选了"是否分页"中的是,所有当前我们总共有100条数据,分了十页。
默认配置中可以在预览报表后,选择每页展示10条、20条、30条、40条
如果需要50条、100条,那么就可以修改如下配置
shjeecg : jmreport: # 预览分页自定义 pageSize: - 10 - 20 - 30 - 40
-
2.可以通过首页、上一页、下一页、末页依次查看数据,也可以在"是否分页"中选中否,在一个页面显示
-
3.除了打印操作外,还有导出操作,其中可以导出为Excel、PDF、PDF图像、图片
shjeecg : jmreport: # 打印纸张自定义 printPaper: - title: A5纸 size: - 148 - 210 - title: A4纸 size: - 250 - 353 # Excel导出模式,fast(快)、primary(精致模式),默认是fast export-excel-pattern: fast # excel导出每个sheet页得行数,每个sheet页最大1048576 page-size-number: 100000 # excel样式超过多少行显示默认样式 excel-style-row: 1000 # 设计页面表格的线是否显示,默认true
-
4.仔细的话,可以看到最后有一个滑动条,这个是调整导出的清晰度的
不过目前来看,也只是把数据展示出来了,不过看着嘛不是太好看。

2 页面优化
如上图所示的报表,仅仅是展示数据,不过这样看起来似乎太草率了,所以再优化一下吧
保存报表后,在积木报表中就可以看到对应的报表文件
此时我们如果还需要编辑报表,就点击这个报表即可

2.1 居中
选中所有数据后,然后单击居中按钮即可

2.2 加粗
报表头跟数据颜色深度一样,是不是不容易区分,这时就可以给报表头加粗
选中报表头,然后单击加粗按钮即可

2.3 填充颜色
报表头颜色加粗后,看着是顺眼了点,那么为了更好的区分报表头和报表数据
选中报表头,然后单击填充颜色,选择适当的颜色即可

预览报表01
居中、加粗、填充颜色后,再次预览查看报表
- 1.可以看到相对好多了,但是每个数据之间是没有划分界限的线的
- 2.可以看到默认的每个字段分配的大小是一样的
- 3.在数据库中性别是F、M,那怎么显示为男、女

2.4 添加边框
选择所有数据后,选择添加边框,添加全边框

2.5 扩展字段单元格
鼠标放在此位置后,会变成双竖线‖
,此时拖动即可

2.6 添加数据字典
2.6.1 打开数据字典
单击左侧的数据字典,右侧的铅笔箭头进入数据字典配置模块

2.6.2 查看数据字典
如下图,积木报表添加的数据字典都在此
- 1.首先可以通过字典名称、字典编号查询历史数据字典
- 2.单击添加即可添加新的数据字典
- 3.已存在的数据字典,可以编辑数据字典的信息,也可以修改字典中配置的信息,也可以删除

2.6.3 添加字典
添加字典后,填写字典名称和字典编码
字典名称自定义即可
字典编码是需要拿到此处使用[1.4 查询数据集](#1.4 查询数据集)

2.6.4 字典配置

单击字典配置后,即可添加配置如下数据,其中数据值是数据库中的数据,名称是其映射的数据

2.6.5 绑定字典
将创建的字典名称复制到性别字段对应的字典Code处,确定即可

预览报表02
可以看到添加边框、字段扩展、匹配数据字典后,效果相对"预览报表01"的时候有好了一点

3 导出为Excel
报表已经初步设计好,可以单击导出,选择导出为Excel查看数据
sh
# application.yml参数
jeecg :
jmreport:
# 导出时每个sheet页存储的数据量,超过这个数据量后会分sheet页
# 每个sheet页最大1048576
page-size-number: 100000
# excel样式超过多少行显示默认样式
excel-style-row: 1000

4 查询框设置
需求描述:
- 1.想要通过手机号查询对应用户信息
- 2.想要通过姓名模糊查询用户信息
- 3.想要根据性别查看用户信息
- 4.想要查询生日是2000年01月01日到2001年01月01日的用户信息
4.1 通过手机号查询对应用户信息
通过手机号查询用户信息,可使用输入框做查询,必须是手机号一个数字不差。
4.1.1 配置输入框
手机号所在行,勾选查询框,设置查询模式为输入框

4.2.2 手机号查询
可以看到通过手机号查询到对应的用户信息,手机号必须是丝毫不差

4.2 通过姓名模糊查询用户信息
通过姓查询该姓氏下所有的用户,采用模糊查询即可
4.2.1 配置模糊查询

4.2.2 姓名查询
可以看到在姓名框输入陈后,即可筛选出所有姓陈的用户

4.3 通过性别筛选用户信息
4.3.1 配置下拉单选

4.3.2 性别下拉框

4.3.3 性别筛选

4.4 查询生日是2000年01月01日到2001年01月01日的用户信息
4.4.1 配置日期范围查询

4.4.2 查询指定日期范围数据

四、报表优化
1. JimuReport报表下拉框条数参数调整
{'selectSearchPageSize':n}
1.1 下拉框条数限制
下拉框默认只显示10条记录,如果想要显示更多条数可以通过添加参数实现。

1.2 参数
selectSearchPageSize参数,设置参数大小

1.3 效果
可以看到设置的下拉框条数20条已经实现

2. JiMuReport报表开发列数量限制调整
2.1 开发列数限制
JiMuReport报表在开发的时候,需要100-200列的数据,但是在设计到一定数量的时候,水平下拉框就不能滑动了

2.2 报表参数调整
col: n
在application.yml
文件的jmreport配置处,如果想要开发150个字段以内的报表,那么就添加列索引参数col:150
。可以根据需求自行设置。

2.3 效果
调整好参数后,可以再设计这个表,可以发现,已经拥有足够的列数可以开发。

3. JiMuReport报表开发日期筛选功能实现年月日-时分秒筛选
日期筛选可分为年月日筛选、年月日时分秒筛选
具体的实现方式可以根据自己日期的格式设置
3.1 年月日筛选功能
开启日期范围查询通常需要
设置类型:日期类型
查询:是
查询模式:范围查询

当日期格式包括时分秒的时候,如果在进行筛选的时候只做时分秒筛选,那么筛选的精度可能达不到业务需求

3.2 设置日期查询格式
将需要进行筛选查询的日期
修改查询日期格式为:
yyyy-MM-dd HH:mm:ss

3.3 效果
修改查询日期格式后,就可以精准到时分秒进行筛选
