批量导出接口
支持批量导出PDF/Excel 版本支持 version 1.7.5+ date 20240416
为了方便用户的大量报表导出需求,我们在V1.7.5+
版本中引入了全新的报表接口导出功能。现在,您可以轻松使用接口自动导出功能。不再需要先进入预览界面,让报表导出变得更加简单和友好。
目录
一、使用服务端内置功能(需要安装python环境)
1、google-chrome和chromedriver 安装
1.1、 安装google-chrome
yum install -y https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
1.2、 安装依赖
yum install -y pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64
1.3、 查看google-chrome版本
# google-chrome --version
Google Chrome 120.0.6099.216
1.4、根据google-chrome版本下载对应的chromedriver
115及以下版本:https://registry.npmmirror.com/binary.html?path=chromedriver
115以上版本:https://googlechromelabs.github.io/chrome-for-testing/
获取到下载地址后可以直接在服务器通过wget
下载
# wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.109/linux64/chromedriver-linux64.zip
历史版本记录:https://getwebdriver.com/chromedriver/api/known-good-versions-with-downloads.json
1.5、解压驱动并移动到/usr/bin
目录下,赋予权限。
# unzip chromedriver-linux64.zip
Archive: chromedriver-linux64.zip
inflating: chromedriver-linux64/LICENSE.chromedriver
inflating: chromedriver-linux64/chromedriver
# cp ./chromedriver-linux64/chromedriver /usr/bin/
# cd /usr/bin
# chmod a+x /usr/bin/chromedriver
2、安装selenium
2.1、确保服务器正确安装Python3与pip3
# python3 -V
Python 3.6.8
# pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
2.2、安装selenium依赖
# pip3 install selenium
3、修改jimuReport配置,启动项目
jeecg:
jmreport:
# 邮件发送
mail:
# 是否开启
enabled: true
host: "???"
sender: "???"
sender-mail: "???@??.com"
sender-code: "???"
automate:
# 必须,python文件目录,绝对路径
py-path: "/usr/bin/python3"
#export:
# 非必须,下载的报表的存放目录(服务器上的绝对路径)
#download-path: "/home/jimureport-auto-export/downloads/"
# 非必须,积木报表view页面地址
#jimu-view-path: "http://???/jmreport/shareView/"
# 非必须,文件过期时间,单位天,默认:30
#expired: 30
4、通过接口调用自动导出功能
- 示例:
curl --location 'http://<hostname>/jmreport/auto/export/' \
--header 'Tenantid: null' \
--header 'X-Tenant-Id: null' \
--header 'Content-Type: application/json' \
--data-raw '{
"exportType": "PDF",
"reportIds": [
"???","???"
],
"reportParams": [
{
"id": "???",
"params": {
"???": "???"
},
"exportType": "excel"
}
],
"receiverEmail": "???@??.com",
"token": "???"
}'
- 参数说明:
参数 | 类型 | 描述 | 必填 | 示例 |
---|---|---|---|---|
exportType | String | 导出类型 | 必填 | PDF/Excel 二选一 |
reportIds | List<String> | 报表id | reportParams 二选一必填 | ["123123123","123123123"] |
reportParams | Array | 报表查询参数集合 | reportIds 二选一必填 | [{"id":"123","params":{"name":"张三"},"exportType": "excel"}] |
receiverEmail | String | 通知消息接收邮箱 | 必填 | "sss@qq.com" |
token | String | 当前用户Token | 非必填 | - |
- 导出完成后,会将成功(或失败)消息发送至接口中的接收邮箱中;邮件中有下载地址,通过下载地址可以下载已导出的文件。
二、使用自动导出插件
版本支持version 1.7.5+ date 20240410
1、google-chrome安装
1.1、 安装google-chrome
yum install -y https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
1.2、 安装依赖
yum install -y pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64
2、获取积木报表自动导出插件上传到服务器,并启动。
插件文件路径:/opt/jimu-report/plugin/auto-export-plugin
插件上传到服务器的任何地方都可以,上文地址只是示例。
启动插件(linux系统):
cd /opt/jimu-report/plugin/
nohup ./auto-export-plugin > ./export-plugin.log 2>&1 &
3、修改jimuReport配置,启动项目
jeecg:
jmreport:
# 邮件发送
mail:
# 是否开启
enabled: true
host: "???"
sender: "???"
sender-mail: "???@??.com"
sender-code: "???"
automate:
export:
# 非必须,下载的报表的存放目录(服务器上的绝对路径)
#download-path: "/home/jimureport-auto-export/downloads/"
# 非必须,积木报表view页面地址
#jimu-view-path: "http://???/jmreport/shareView/"
# 非必须,文件过期时间,单位天,默认:30
#expired: 30
# 使用插件导出必须,插件访问域名 比如: http://127.0.0.1:16065
pluginDomain: "http://127.0.0.1:16065/"
4、通过接口调用自动导出功能
- 示例:
curl --location 'http://<hostname>/jmreport/auto/export/plugin' \
--header 'Tenantid: null' \
--header 'X-Tenant-Id: null' \
--header 'Content-Type: application/json' \
--data-raw '{
"exportType": "PDF",
"reportIds": [
"???","???"
],
"reportParams": [
{
"id": "???",
"params": {
"???": "???"
},
"exportType": "excel"
}
],
"receiverEmail": "???@??.com",
"token": "???"
}'
- 参数说明:
参数 | 类型 | 描述 | 必填 | 示例 |
---|---|---|---|---|
exportType | String | 导出类型 | 必填 | PDF/Excel 二选一 |
reportIds | List<String> | 报表id | reportParams 二选一必填 | ["123123123","123123123"] |
reportParams | Array | 报表查询参数集合 | reportIds 二选一必填 | [{"id":"123","params":{"name":"张三"},"exportType": "excel"}] |
receiverEmail | String | 通知消息接收邮箱 | 必填 | "sss@qq.com" |
token | String | 当前用户Token | 非必填 | - |
- 导出完成后,会将成功(或失败)消息发送至接口中的接收邮箱中;邮件中有下载地址,通过下载地址可以下载已导出的文件。
三、Windows/MacOs电脑安装Selenium环境
下载Python
访问https://www.python.org/downloads/,点击Download Python
安装包下载完成后运行安装包,一直下一步,直到安装完成。
环境变量配置
windows
在命令提示框中(cmd) : 输入path=%path%;C:\Python
;按下 Enter。
注意:
C:\Python
是Python的安装目录。
MacOs
MacOs系统的python安装包会自动将环境变量配置好,不需要手动配置。
安装selenium依赖
打开命令行,使用pip安装selenium
# pip3 install selenium
四、查询导出记录
版本支持 version 1.7.5+ date 20240509
批量导出接口的导出报表功能时异步实现,想要知道是否导出成功需要通过导出记录查询功能来查看。
要使用该功能首先要确保积木报表的数据库中有
jimu_report_export_log
表,如果没有可以使用以下语句创建数据库表:
CREATE TABLE IF NOT EXISTS `jimu_auto_export_log` (
`id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`batch_no` varchar(50) NULL COMMENT '批次编号',
`export_channel` varchar(20) NULL COMMENT '导出渠道',
`export_type` varchar(10) NULL COMMENT '导出类型',
`report_id` text NULL COMMENT '报表id',
`download_path` varchar(255) NULL COMMENT '下载路径',
`status` varchar(15) NULL COMMENT '状态',
`create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`tenant_id` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
PRIMARY KEY (`id`)
) COMMENT = '积木报表自动导出记录表';
tips: 当开始导出后默认10分钟超时会将任务状态改为失败,如果批量导出报表数较多,超过默认超时时间,可以通过以下配置修改。
jeecg:
jmreport:
automate:
export:
timeout: 10