java导出Echarts图表的示例代码(柱状图/饼形图/折线图)

 更新时间:2025年06月11日 10:59:30   作者:cccl.  
这篇文章主要为大家详细介绍了java导出Echarts图表的示例代码,包括柱状图,饼形图,折线图等,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

1、Apache POI依赖

代码如下所示:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>ooxml-schemas</artifactId>
        <version>1.4</version>
    </dependency>

2、导出word报告Controller

  @ApiOperation(value = "导出word报告", notes = "导出word报告")
   @GetMapping("/exportWord")
   public void exportWord(HttpServletResponse response) throws Exception {
      XWPFDocument word = commonService.exportWord();
         try {
             response.setHeader("Content-disposition",
            "attachment;filename=" + new String("analysis_report.doc".getBytes(), "utf-8"));
              response.setContentType("application/x-msdownload");
               OutputStream os = response.getOutputStream();
                 word.write(os);
                 os.close();
        } catch (IOException e) {
            logger.info("文件下载出错!");
        }
    }

3、service

//导出word报告
XWPFDocument  exportWord() throws Exception;

4、servicelmpl

package com.iecas.satresource.service.impl;
import org.apache.poi.util.Units;
import org.apache.poi.xddf.usermodel.chart.*;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.FileOutputStream;
@Override
public XWPFDocument exportWord() {
    // 1、创建word文档对象
    XWPFDocument doc = new XWPFDocument();
    XWPFParagraph para;
    XWPFRun run;
     //2.// x轴标题
     String name = " ";
      // 3、X轴(分类轴)数据
   String[] xAxisData = new String[] {
            "2022-01","2022-02","2022-03","2022-04","2022-05","2022-06",
            "2022-07","2022-08","2022-09","2022-10","2022-11","2022-12",
    };
        yAxis.setTitle("流量(个)"); // Y轴标题
    yAxis.setCrossBetween(AxisCrossBetween.BETWEEN); // 设置图柱的位置:BETWEEN居中
     // 4、y轴数据
    Integer[] yAxisData = new Integer[]{
            20, 37, 21, 75, 79, 118,
            29, 112, 51, 85, 101, 89
    };
 //如一次性导出多个ECharts柱形图可创建多个方法进行调用创建,如果数据类型不一样可在创建工具类创建多个方法进行调用
    wordUtil.WordReadZc(doc, xAxisDate, yAxisDat4, name);
    return doc;
    }

5、工具类

package com.iecas.satresource.utils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.xddf.usermodel.chart.*;
import org.apache.poi.xwpf.usermodel.XWPFChart;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.io.IOException;

/**
 * 导出ECharts柱形图
 */
public class WordUtil {
 XWPFChart chart = null;
  public XWPFChart WordRead(XWPFDocument doc, String[] xAxisDate, Integer[] yAxisDate, String name) {
      try {
        this.chart = doc.createChart(5400000, 3600000);
    } catch (InvalidFormatException var15) {
        var15.printStackTrace();
    } catch (IOException var16) {
        var16.printStackTrace();
    }

    this.chart.setTitleOverlay(false);
    XDDFChartLegend legend = this.chart.getOrAddLegend();
    legend.setPosition(LegendPosition.TOP);
    XDDFCategoryAxis xAxis = this.chart.createCategoryAxis(AxisPosition.BOTTOM);
    //标题名称
    xAxis.setTitle(name);
    //x数据
    XDDFCategoryDataSource xAxisSource = XDDFDataSourcesFactory.fromArray(xAxisDate);
    XDDFValueAxis yAxis = this.chart.createValueAxis(AxisPosition.LEFT);
    yAxis.setCrossBetween(AxisCrossBetween.BETWEEN);
    XDDFBarChartData barChart;
    Series barSeries;
    //y数据
      XDDFNumericalDataSource<Integer> yAxisSource1 = XDDFDataSourcesFactory.fromArray(yAxisDate);
        barChart = (XDDFBarChartData)this.chart.createData(ChartTypes.BAR, xAxis, yAxis);
        barChart.setBarDirection(BarDirection.COL);
        barSeries = (Series)barChart.addSeries(xAxisSource, yAxisSource1);
        barSeries.setTitle("", (CellReference)null);
        this.chart.plot(barChart);
            return this.chart;
  }
}

到此这篇关于java导出Echarts图表的示例代码(柱状图/饼形图/折线图)的文章就介绍到这了,更多相关java导出Echarts图表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中的函数式编程

    Java中的函数式编程

    这篇文章介绍Java中的函数式编程,函数式编程是一种编程范式,其中程序是通过应用和组合函数来构造的。它是一种声明式编程范式,其中函数定义是表达式树,每个表达式树返回一个值,而不是一系列改变程序状态的命令语句,具体情况请看下文,希望对你有所帮助
    2021-10-10
  • Mybatis一对多延迟加载实现代码解析

    Mybatis一对多延迟加载实现代码解析

    这篇文章主要介绍了Mybatis一对多延迟加载实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java使用ExecutorService来停止线程服务

    Java使用ExecutorService来停止线程服务

    这篇文章主要介绍了Java使用ExecutorService来停止线程服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • @ComponentScan在spring中无效的原因分析及解决方案

    @ComponentScan在spring中无效的原因分析及解决方案

    这篇文章主要介绍了@ComponentScan在spring中无效的原因分析及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • spring注解在自定义jar包中无法被扫描的解决方案

    spring注解在自定义jar包中无法被扫描的解决方案

    这篇文章主要介绍了spring注解在自定义jar包中无法被扫描的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 解决SpringBoot @value注解取不到值的问题

    解决SpringBoot @value注解取不到值的问题

    这篇文章主要介绍了解决SpringBoot @value注解取不到值的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java编程实现获取当前代码行行号的方法示例

    Java编程实现获取当前代码行行号的方法示例

    这篇文章主要介绍了Java编程实现获取当前代码行行号的方法,结合实例形式分析了java基于StackTraceElement对象实现获取代码行号的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    打印日志的在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志的输出路径,下面看一个示例吧
    2014-01-01
  • 三道MySQL新手入门面试题,通往自由的道路

    三道MySQL新手入门面试题,通往自由的道路

    这篇文章主要为大家分享了最有价值的3道MySQL面试题,,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • SpringBoot整合OpenApi的实践

    SpringBoot整合OpenApi的实践

    本文主要介绍了SpringBoot整合OpenApi,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论