java导出Echarts图形(柱状图、饼形图、折线图)


今日寒窗苦读,必定有我;


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>

一,导出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("文件下载出错!");
        }
    }

二,service

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

三,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;
    }

三:工具类

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;
  }
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将 Echarts 折线图导出片或其他格式,可以使用 Echarts 提供的插件或工具。下面是一种常见的方法: 1. 使用 echarts-to-image 插件: - 首先,确保你的项目中已经安装了 echartsecharts-to-image。 - 在你的代码中,引入 echartsecharts-to-image。 - 创建一个 echarts 实例,并配置好你的折线图。 - 将 echarts 实例传递给 echarts-to-image 的 generateImage 方法。 - 在生成的回调函数中,获取到导出片并进行后续操作。 以下是一个示例代码: ```javascript import echarts from 'echarts'; import echartsToImage from 'echarts-to-image'; const chartDom = document.getElementById('chart'); // 替换为你的表容器 DOM 元素 const myChart = echarts.init(chartDom); // 配置折线图数据和样式 const option = { // ... }; // 渲染表 myChart.setOption(option); // 导出表为echartsToImage.generateImage(myChart, { type: 'png', // 导出片的格式,可以是 'png'、'jpeg'、'svg' }, (dataURL) => { // 导出成功后的回调函数 const link = document.createElement('a'); link.href = dataURL; link.download = 'chart.png'; // 下载片的名称 link.click(); }); ``` 将上述代码添加到你的项目中,并根据实际情况修改表容器的 ID 和配置。运行代码后,会生成一个包含折线图片,并自动下载到本地。 除了使用 echarts-to-image 插件,你还可以使用其他工具或方法将 Echarts 折线图导出片,如使用 Canvas 的 toDataURL 方法、使用服务器端渲染等。具体的实现方式取决于你的项目需求和技术栈选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值