报表导出接口 (新版 API)
支持版本
1.9.6+此方案提供纯 JAVA 实现的报表导出能力, 支持
excel、word等主流格式,速度快、支持批量;无需 python/selenium 环境。同时支持图表、图片、二维码、条形码的导出(暂不支持地图)。
图表导出支持
默认情况下不含图表导出能力,如需导出 ECharts 图表,请额外添加以下依赖:
<dependency>
<groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-echarts-starter</artifactId>
<version>2.2.0</version>
</dependency>
接口一:GET /jmreport/exportReport
适合直接将单个报表或多个报表打包下载的场景:单个报表直接下载,超过一个则自动打包为 zip;该接口仅通过流输出下载结果,不会记录导出日志。
请求信息
| 配置项 | 说明 |
|---|---|
| 接口地址 | https://<domain>/[contextPath]/jmreport/exportReport |
| 请求方式 | GET |
| 认证方式 | X-Access-Token(Header)或 token(query),二选一 |
请求参数
请求Header参数
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| X-Access-Token | - | string | 是 | 认证令牌(与参数token二选一) |
请求参数
| 属性名 | 是否必填 | 类型 | 说明 | 用法 |
|---|---|---|---|---|
| token | 否 | string | 令牌 | 认证令牌(与header中token二选一) |
| zipName | 否 | sting | zip文件名称 | 导出zip文件的名称,仅批量导出是有效,不填默认为批量导出_[时间戳] |
| exportParams | 是 | array | 导出参数 | |
| exportParams.reportId | 是 | string | 报表id | |
| exportParams.exportType | 是 | string | 导出类型 | 可选范围: pdf、excel、word |
| exportParams.fileName | 否 | string | 文件名称 | 导出的文件名称,不传则为当前报表名称 |
| exportParams.queryParam | 是 | Obj | 报表参数 | eg. { year: "2025", month: "04", participants:"admin,jeecg" } |
前端调用
let exportParams = [
{
//必传
reportId: '1074182775962648576',
//必传
exportType:'pdf',
//非必传,默认为当前报表名称
fileName: '第一季度销售预览表',
//报表查询参数
queryParam: JSON.stringify({ year: "2025", month: "04", participants:"admin,jeecg" })
},
//多个
...
]
//其中http://localhost:8086替换成自己的项目请求地址
window.open("http://localhost:8086/jmreport/exportReport?zipName=批量导出&token=123456&exportParams=" + encodeURIComponent(JSON.stringify(exportParams)));
接口二:POST /jmreport/auto/export
该接口始终将结果打包为 zip,并会记录导出日志,可在导出记录页面或邮件中重复下载;同时支持邮箱通知和将导出文件同步到云存储。
请求信息
| 配置项 | 说明 |
|---|---|
| 接口地址 | https://<domain>/[contextPath]/jmreport/auto/export |
| 请求方式 | POST |
| 请求头 | X-Access-Token(与 token 二选一)Content-Type: application/json |
请求参数
请求Header参数
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| X-Access-Token | - | string | 是 | 认证令牌(与参数token二选一) |
请求参数
| 属性名 | 是否必填 | 类型 | 说明 | 用法 |
|---|---|---|---|---|
| token | 否 | string | 令牌 | 认证令牌(与header中token二选一) |
| receiverEmail | 否 | sting | 通知消息接收邮箱 | 导出完成后,会将成功(或失败)消息发送至接口中的接收邮箱中;邮件中有下载地址,通过下载地址可以下载已导出的文件。 |
| fileSyncPath | 否 | sting | 同步文件路径 | 导出完成后同步文件到对象存储的这个目录下 |
| exportParams | 是 | array | 导出参数 | |
| exportParams.id | 是 | string | 报表id | |
| exportParams.exportType | 是 | string | 导出类型 | 可选范围: pdf、excel、word |
| exportParams.params | 是 | Obj | 报表参数 | eg. { year: "2025", month: "04", participants:"admin,jeecg" } |
请求示例:
curl --location 'http://<hostname>/jmreport/auto/export/' \
--header 'X-Tenant-Id: ???' \
--header 'X-Access-Token: ???' \
--header 'Content-Type: application/json' \
--data-raw '{
"reportParams": [
{
"id": "???",
"params": {
"???": "???"
},
"exportType": "excel"
}
],
"receiverEmail": "???@??.com",
"fileSyncPath": "your_sync_path",
"token": "???"
}'
导出日志
调用 /jmreport/auto/export 后的导出会被写入 jimu_report_export_log 表,可在导出记录页查看并重新下载。
请确认数据库中存在
jimu_report_export_log表,如无表请参考 升级日志 执行更新脚本。
导出示例
使用 curl 命令调用接口:
curl --location "http://localhost:8085/jmreport/auto/export" \
--header "X-Access-Token: b5680659-91b3-4fc2-a6d9-3a626c45a9bb" \
--header "Content-Type: application/json" \
--data-raw '{
"reportParams": [
{
"id": "891612623430320128",
"params": {},
"exportType": "pdf"
}
]
}' \
--output report.zip
执行结果:

生成的导出文件:
