UReport2 报表
UReport2 (opens new window) 是一款基于 Apache-2.0 协议开源的中国式报表引擎,通过类似于 Excel 的操作风格设计复杂报表,支持预览、打印,以及导出 Excel、PDF、Word。
官方 UReport2 已停止维护,项目使用社区维护版 yudao-ureport2 (opens new window),各分支使用的版本如下:
| 后端分支 | JDK | Spring Boot | UReport 版本 |
|---|---|---|---|
master | JDK 8 | 2.7.x | 2.0.1 (opens new window) |
master-jdk17 | JDK 17/21 | 3.5.x | 3.0.1 (opens new window) |
master-jdk25 | JDK 25 | 4.1.x | 4.0.1 (opens new window) |
说明
以上都是发布到 Maven Central 的正式版本,项目的 yudao-dependencies 已固定对应版本,从 Maven Central 或阿里云等镜像仓库直接拉取即可,不需要从源码安装。三个版本都修复了预览页「预览」「分页预览」切换、「PDF 在线预览打印」调整纸张时模板名称的编码问题,2.0.1 还适配了 POI 5(Excel、Word 导出等)。
# 1. 功能开启
yudao-module-report 实现了 UReport2 报表的能力,考虑到编译速度,默认是关闭的。开启步骤如下:
- 第一步,开启
yudao-module-report模块 - 第二步,导入 UReport2 的 SQL 数据库脚本
- 第三步,启动前后端项目,访问 UReport2 报表的菜单
# 1.1 第一步,开启模块
① 修改根目录的 pom.xml (opens new window) 文件,取消 yudao-module-report 模块的注释。

② 修改 yudao-server 目录的 pom.xml (opens new window) 文件,引入 yudao-module-report 模块。如下图所示:

③ 点击 IDEA 右上角的【Reload All Maven Projects】,刷新 Maven 依赖。如下图所示:

# 1.2 第二步,导入 SQL
下载 ureport.sql 脚本,并导入数据库,初始化 UReport2 相关的表结构和菜单。脚本可以重复导入,之前导入过旧版本脚本的,重新导入即可升级菜单。如果你是 Oracle、PostgreSQL 等其它数据库,需要自己参照 MySQL 脚本进行转换。
友情提示:↑↑↑ ureport.sql 是可以点击下载的! ↑↑↑
# 1.3 第三步,启动前后端项目
① 启动后端项目、前端项目。
② 访问 [报表管理 -> UReport2 报表] 菜单,可以看到报表列表。如下图所示:

# 2. 如何使用?
# 2.1 报表列表
报表列表展示当前租户的报表,支持按名称搜索,可以进行如下操作:
- 【新建】:打开空白的设计器,设计新报表。
- 【设计】:打开设计器,修改报表。
- 【预览】:打开报表的预览页,进行打印、导出。
- 【删除】:删除报表。
注意,本页面不跟随顶部的「访问租户」切换,列表、删除、设计、预览统一使用登录用户的租户。
# 2.2 设计与保存
点击【新建】或【设计】按钮,打开 UReport2 设计器。如下图所示:

设计完成后,点击【保存】按钮,存储选择「数据库」,文件名输入 demo 即可,保存后的报表名为 db:demo.ureport.xml。关闭设计器后,会自动刷新报表列表。
设计器自带的【打开】按钮,也可以打开已保存的报表。如下图所示:

报表按租户隔离,同一租户内保存同名报表会覆盖原报表,不同租户之间互不可见。
设计器、表达式、函数等的使用,可以查看 UReport2 的文档,主要是:
# 2.3 数据源
项目没有把主数据库作为「内置数据源」,需要在设计器中添加 JDBC 数据源,建议使用只读账号。也可以自己实现 BuildinDatasource 接口,注册为 Spring Bean。
注意,UReport2 不会自动拼接租户、数据权限的条件,报表 SQL 查询的数据范围,需要自己控制!!!
# 2.4 预览、打印与导出
点击【预览】按钮,打开报表的预览页,可以进行打印,以及导出 PDF、Word、Excel 等。如下图所示:

已保存报表的预览地址为 /ureport/preview?_u=db:demo.ureport.xml。
# 2.5 菜单权限
UReport2 报表分成两个权限:
| 权限 | 说明 |
|---|---|
[UReport2 报表] 菜单:report:ureport:query | 查看报表列表,预览、打印、导出已保存的报表 |
[报表设计] 按钮:report:ureport:design | 新建、设计、删除报表,配置数据源,同时包含查看权限 |
在 [系统管理 -> 角色管理] 中按需分配即可,多租户时还需要在 [租户管理 -> 租户套餐] 中勾选。只有查看权限的用户,只能预览已保存的报表。如下图所示:

注意
设计器可以配置任意 JDBC 数据源、执行 SQL,请只把 [报表设计] 按钮分配给可信的管理员!
集成 UReport2 的代码实现?
① 后端:在 ureport2 (opens new window) 包下,进行 UReport2 的集成,报表保存在 report_ureport_file 表中。
② 前端:在 @/views/report/ureport/index.vue (opens new window) 文件,展示报表列表,并通过 IFrame 嵌入 UReport2 的设计器、预览页。IFrame 地址通过 token(刷新令牌)、tenantId 参数传递登录状态,租户以登录用户为准。