积木报表可以通过源码部署、SpringBoot集成、Docker部署以及各种成熟框架部署,具体可查看积木官方文档
当前采用源码部署,首先下载Jimureport-example-1.5.6
使用IDEA启动打开后如下:
db目录下是数据库文件
src目录下是开发文件
可以看到db目录下,有一个sql文件,这个就是使用积木报表的数据库文件,在数据库中初始化一下即可。
查看这个SQL文件,可以看到是创建jimureport
数据库,以及该数据库下的需要用到的表
将SQL文件上传到数据库服务器上,并加载到数据库中
[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)
修改application.yml配置文件
主要修改datasource处数据库的连接数据
启动主类JimuReportApplication
启动成功后,可以通过如下URL访问积木报表
访问URL后,直接进入到积木报表工作台
主要分为以下模块:
报表管理模块
报表管理模块有数据报表、图形报表、打印设计等,可以根据需求设计不同的报表类型
报表设计模块
报表设计模块有新建报表项和报表查看项。在已生成的报表下列可以看到有五个小项目,从左到右依次是预览、收藏、删除、复制、分享
模板案例模块
模板案例模块主要是积木报表提供的报表模板,当然也可以将自己设计的模板保存称模板。不过需要注意的是,将你设计的报表保存成模板时,在报表设计模板就找不到该报表。类似于移动报表的形式。
目前积木报表支持以下数据库连接方式,需要使用到的数据库,只需要在POM文件中添加对应得依赖即可
数据库 | 支持 |
---|---|
MySQL | √ |
Oracle、Oracle9i | √ |
SqlServer、SqlServer2012 | √ |
PostgreSQL | √ |
DB2、Informix | √ |
MariaDB | √ |
SQLite、Hsqldb、Derby、H2 | √ |
达梦、人大金仓、神通 | √ |
华为高斯、虚谷、瀚高数据库 | √ |
阿里云PolarDB、PPAS、HerdDB | √ |
Hive、HBase、CouchBase | × |
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
系统变量是预置的一些和当前登录人相关的变量:比如:用户账户、用户部门编码、以及在使用jeecgboot集成报表时支持自定义变量名。
#{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} |
以数据报表为例,简单介绍创建报表的过程
如下图可见,主要分为四个模块:
模块一(左)
模块二(右)
这部分是对数据报表的进一步优化
模块三(上)
这些功能跟excel的功能很像
模块四(中)
报表设计也是报表展示区域
可以看到在数据集管理处有SQL数据集、API数据集、JavaBean数据集、JSON数据集等,这是获取数据的四种方式,可以根据项目实际情况选择合适的数据集管理方式。
上一步点击维护数据集后,会进入到如下页面,可以看到这里有积木报表提供的初始化数据集,可以在其基础上编辑,也可以选择新增数据源
自定义数据源名称,适当的名称可以区分业务
根据自己数据库选择对应的数据源类型
一般情况下选择数据源类型后,会自动匹配对应的驱动类,也可自行修改
数据源地址,主要修改数据库的主机名、端口、以及取数据的数据库名称
最后填写好用户名、密码后,即可点击密码旁的测试
测试成功后,会有如下的"数据库连接成功"提示
确定后,返回即可
如下图可见,主要分为三个模块:
模块一(左)
选择用到的数据库后,系统会自动列举该数据库中的表,可以选中表进行数据查询,也可以在报表SQL栏自定义SQL
模块二(上)
模块主要有编码、名称、是否集合、是否分页、报表SQL、SQL解析
编码尽量是唯一的,名称可以自定义
选中是否集合,代表有多条数据
选择是否分页后,当本页面无法显示所有数据时,会自动分页
在报表SQL处填写查询数据语句
最后点击SQL解析
模块三(下)
模块主要有报表字段明细、报表参数、数据预览等
字段名
这是根据SQL语句查询的结果字段
排序
给字段的排序,对报表结果没影响,但是当设置多个查询框的时候,它可以决定查询框依次展示的顺序
字段文本
可以给字段做注释,方便查看,同样在设置查询框的时候,提示语句会是字段文本内容
类型
有数值类型、字符类型、日期类型。最主要是日期类型,当该字段是日期时,如果你想设置范围查询(比如我想查询该日期2023-01-01到2023-02-02期间数据),那么该字段的类型应该设置为日期类型
字典code
可以填写自定义的字典,比如数据库有status字段,值为0,1,2。那么可以设置字典,映射对应的含义。
查询
选中即代表对该字段设置查询
查询模式
在查询模式中,最常用的是输入框、下拉单选、下拉多选、范围查询、模糊查询
输入框
不支持模糊搜索
下拉单选
下拉多选
范围查询
可用于设置时间字段,时间范围查询
模糊查询
支持模糊查询
下拉树
自定义下拉框
查询默认值
查询日期格式
日期格式如下,可以根据需求格式化日期
yyyy-MM-dd HH:mm:ss
参数配置
下拉单选默认只能显示几个,如果需要显示更多的话,可以在参数配置中填写如下
{'selectSearchPageSize':20}
在报表SQL中如果添加参数判断语句,则报表参数处会有如下选项框,跟报表字段明细处相同
在如下的操作中,暂时不使用参数
数据预览后点击确定即可
上一步确定后,即可进入如下页面,进行报表设计
首先最下面有滚动条,当字段过多时,可以滑动即可
其次最右边的框可能会阻挡视线,在用不到的时候收缩即可
然后根据已有字段,在Excel框中手动填入字段名称即可
在左侧就是我们需要绑定的数据集,可使用鼠标拖动放置到对应的excel单元格中即可
数据集绑定后就是如下页面
点击保存后,首次保存需要添加报表名称,以及类型。
之后就会在如下图的左侧栏目显示对应的信息
填写后,点击小眼睛预览即可
现在就可以看到数据结果了,从如下我们可以看出
1.因为我们在查询数据集的时候,选了"是否分页"中的是,所有当前我们总共有100条数据,分了十页。
默认配置中可以在预览报表后,选择每页展示10条、20条、30条、40条
如果需要50条、100条,那么就可以修改如下配置
jeecg :
jmreport:
# 预览分页自定义
pageSize:
- 10
- 20
- 30
- 40
2.可以通过首页、上一页、下一页、末页依次查看数据,也可以在"是否分页"中选中否,在一个页面显示
3.除了打印操作外,还有导出操作,其中可以导出为Excel、PDF、PDF图像、图片
jeecg :
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.仔细的话,可以看到最后有一个滑动条,这个是调整导出的清晰度的
不过目前来看,也只是把数据展示出来了,不过看着嘛不是太好看。
如上图所示的报表,仅仅是展示数据,不过这样看起来似乎太草率了,所以再优化一下吧
保存报表后,在积木报表中就可以看到对应的报表文件
此时我们如果还需要编辑报表,就点击这个报表即可
选中所有数据后,然后单击居中按钮即可
报表头跟数据颜色深度一样,是不是不容易区分,这时就可以给报表头加粗
选中报表头,然后单击加粗按钮即可
报表头颜色加粗后,看着是顺眼了点,那么为了更好的区分报表头和报表数据
选中报表头,然后单击填充颜色,选择适当的颜色即可
居中、加粗、填充颜色后,再次预览查看报表
选择所有数据后,选择添加边框,添加全边框
鼠标放在此位置后,会变成双竖线‖
,此时拖动即可
单击左侧的数据字典,右侧的铅笔箭头进入数据字典配置模块
如下图,积木报表添加的数据字典都在此
添加字典后,填写字典名称和字典编码
字典名称自定义即可
字典编码是需要拿到此处使用1.4 查询数据集
单击字典配置后,即可添加配置如下数据,其中数据值是数据库中的数据,名称是其映射的数据
将创建的字典名称复制到性别字段对应的字典Code处,确定即可
可以看到添加边框、字段扩展、匹配数据字典后,效果相对"预览报表01"的时候有好了一点
报表已经初步设计好,可以单击导出,选择导出为Excel查看数据
# application.yml参数
jeecg :
jmreport:
# 导出时每个sheet页存储的数据量,超过这个数据量后会分sheet页
# 每个sheet页最大1048576
page-size-number: 100000
# excel样式超过多少行显示默认样式
excel-style-row: 1000
需求描述:
通过手机号查询用户信息,可使用输入框做查询,必须是手机号一个数字不差。
手机号所在行,勾选查询框,设置查询模式为输入框
可以看到通过手机号查询到对应的用户信息,手机号必须是丝毫不差
通过姓查询该姓氏下所有的用户,采用模糊查询即可
可以看到在姓名框输入陈后,即可筛选出所有姓陈的用户
{'selectSearchPageSize':n}
下拉框默认只显示10条记录,如果想要显示更多条数可以通过添加参数实现。
selectSearchPageSize参数,设置参数大小
可以看到设置的下拉框条数20条已经实现
JiMuReport报表在开发的时候,需要100-200列的数据,但是在设计到一定数量的时候,水平下拉框就不能滑动了
col: n
在application.yml
文件的jmreport配置处,如果想要开发150个字段以内的报表,那么就添加列索引参数col:150
。可以根据需求自行设置。
调整好参数后,可以再设计这个表,可以发现,已经拥有足够的列数可以开发。
日期筛选可分为年月日筛选、年月日时分秒筛选
具体的实现方式可以根据自己日期的格式设置
开启日期范围查询通常需要
设置类型:日期类型
查询:是
查询模式:范围查询
当日期格式包括时分秒的时候,如果在进行筛选的时候只做时分秒筛选,那么筛选的精度可能达不到业务需求
将需要进行筛选查询的日期
修改查询日期格式为:
yyyy-MM-dd HH:mm:ss
修改查询日期格式后,就可以精准到时分秒进行筛选