跳到主要内容

报表导出接口 (新版 API)

支持版本 1.9.6+

此方案提供纯 JAVA 实现的报表导出能力, 支持 pdfexcelword 等主流格式,速度快、支持批量;无需 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二选一)

请求参数

属性名是否必填类型说明用法
tokenstring令牌认证令牌(与header中token二选一)
zipNamestingzip文件名称导出zip文件的名称,仅批量导出是有效,不填默认为批量导出_[时间戳]
exportParamsarray导出参数
exportParams.reportIdstring报表id
exportParams.exportTypestring导出类型可选范围: pdf、excel、word
exportParams.fileNamestring文件名称导出的文件名称,不传则为当前报表名称
exportParams.queryParamObj报表参数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二选一)

请求参数

属性名是否必填类型说明用法
tokenstring令牌认证令牌(与header中token二选一)
receiverEmailsting通知消息接收邮箱导出完成后,会将成功(或失败)消息发送至接口中的接收邮箱中;邮件中有下载地址,通过下载地址可以下载已导出的文件。
fileSyncPathsting同步文件路径导出完成后同步文件到对象存储的这个目录下
exportParamsarray导出参数
exportParams.idstring报表id
exportParams.exportTypestring导出类型可选范围: pdf、excel、word
exportParams.paramsObj报表参数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

执行结果:

生成的导出文件: