ECHARTS

【已解决】java如何在后台生成echarts图表并将图片插入到word文档中,完整demo

需求:数据进行统计后,需要将统计好的数据生成对应的echarts图,并将echarts图插入到word文档中导出使用。不需要在页面(浏览器)上展示。这就导致了,无法通过浏览器对echarts数据进行渲染后,在提供对应的base64的字符串给后端进行下载。原理:通过无头浏览器调用js方法,使用服务端查出来的数据生成echars图片,此处使用了phantomjs作为无头浏览器(此开源项目目前处于终止状

需求:

数据进行统计后,需要将统计好的数据生成对应的echarts图,并将echarts图插入到word文档中导出使用。不需要在页面(浏览器)上展示。这就导致了,无法通过浏览器对echarts数据进行渲染后,在提供对应的base64的字符串给后端进行下载。

原理:

通过无头浏览器调用js方法,使用服务端查出来的数据生成echars图片,此处使用了phantomjs作为无头浏览器(此开源项目目前处于终止状态,谷歌浏览器等都开发出类似功能,源码贡献者成员之一终止继续更新版本)。下附详细代码。

所需要的软件包:

链接: https://pan.baidu.com/s/1guTP-9RsZtSDFj1XFLzXqA?pwd=vgay 提取码: vgay 

详细代码如下;

①:常量对象

package com.kaigejava.demo4;
public class EChartWord {

    // ============== 这里要改成自己电脑对应的文件位置,服务器部署时可以通过环境变量等方式来动态改变它们的值 =================
    /**
     * echart-convert包的路径
     */
    public static String eChartJSPath = "D:\\BaiduNetdiskDownload\\服务器生成echart图片工具包\\echarts-convert\\echarts-convert1.js";
    /**
     * echart临时文件存储路径
     */
    public static  String eChartTempPath = "D:\\files\\test\\";
    /**
     * phantomjs命令路径
     */
    //private String phantomjsPath = "/Users/helios_fz/IdeaProjects/rbac/rbac-admin/src/main/resources/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs";
    public static  String phantomjsPath = "D:\\BaiduNetdiskDownload\\服务器生成echart图片工具包\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe";

}

②:工具类

package com.kaigejava;

/**
 * @author 凯哥Java
 * @since 2023/5/24 14:42
 */

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.UUID;

import static com.kaigejava.demo4.EChartWord.phantomjsPath;

public class EChartsUtil {

    /**
     * 生成EChart图
     *
     * @param options      EChart初始化json
     * @param tmpPath      临时文件存放处
     * @param echartJsPath 第三方工具路径--也就是js的路径
     * @return
     */
    public static  String generateEChartConvertFilePath(String options, String tmpPath, String echartJsPath)  {
        return  generateEChart(options, tmpPath,echartJsPath);
    }
    /**
     * 生成EChart图
     *
     * @param options      EChart初始化json
     * @param tmpPath      临时文件存放处
     * @param echartJsPath 第三方工具路径--也就是js的路径
     * @return
     */
    public static  InputStream generateEChartConvert(String options, String tmpPath, String echartJsPath) throws IOException {
        String dataPath = generateEChart(options, tmpPath,echartJsPath);
        return new FileInputStream(new File(dataPath));
    }

        /**
         * 生成EChart图
         *
         * @param options      EChart初始化json
         * @param tmpPath      临时文件存放处
         * @param echartJsPath 第三方工具路径--也就是js的路径
         * @return
         */
    public  static BufferedImage  generateEChartConvertFileToImage(String options, String tmpPath, String echartJsPath) throws IOException {
     

原创不易,完成人机校验,阅读全文

相关推荐