跳到主要内容

导出报表接口(依赖python)

  • 支持批量导出PDF/Excel
  • version 1.7.5+ 支持

为了满足用户通过接口导出报表需求,我们在V1.7.5+版本中引入了全新的报表导出接口。现在,您可以轻松调用接口导出报表。不再需要先预览报表,再点击导出功能。

此方案支持导出图表,但是使用较复杂,需要依赖python3selenium环境。

前提条件

该导出接口依赖 python3selenium环境,需要安装对应的服务,具体参考 依赖环境安装方式

导出报表接口

通过接口调用自动导出报表(PDF/EXCEL),支持批量导出; 此接口是异步的,导出完成后,会将成功消息发送至邮箱中,邮件中有下载地址;

  • 示例:
    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 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

依赖环境安装方式

方式一:服务端手工安装依赖软件

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

方式二: 使用官方自动导出插件

版本支持version 1.7.5+ date 20240410

官方将python环境和selenium环境打包成插件,用户只需要安装插件即可使用。

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/"

方式三: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