跳到主要内容

批量导出接口

支持批量导出PDF/Excel 版本支持 version 1.7.5+ date 20240416

为了方便用户的大量报表导出需求,我们在V1.7.5+版本中引入了全新的报表接口导出功能。现在,您可以轻松使用接口自动导出功能。不再需要先进入预览界面,让报表导出变得更加简单和友好。

目录

一、使用服务端内置功能(需要安装python环境)

二、使用自动导出插件

三、Windows/MacOs电脑安装Selenium环境

四、查询导出记录

一、使用服务端内置功能(需要安装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": "???"
}'
  • 参数说明:
参数类型描述必填示例
exportTypeString导出类型必填PDF/Excel 二选一
reportIdsList<String>报表idreportParams二选一必填 ["123123123","123123123"]
reportParamsArray报表查询参数集合reportIds二选一必填[{"id":"123","params":{"name":"张三"},"exportType": "excel"}]
receiverEmailString通知消息接收邮箱必填"sss@qq.com"
tokenString当前用户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": "???"
}'
  • 参数说明:
参数类型描述必填示例
exportTypeString导出类型必填PDF/Excel 二选一
reportIdsList<String> 报表idreportParams二选一必填["123123123","123123123"]
reportParamsArray报表查询参数集合reportIds二选一必填 [{"id":"123","params":{"name":"张三"},"exportType": "excel"}]
receiverEmailString通知消息接收邮箱必填"sss@qq.com"
tokenString当前用户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