echarts 图表导出到 Word

7,365次阅读
没有评论

共计 2062 个字符,预计需要花费 6 分钟才能阅读完成。

本篇文章主要介绍使用 poi-tl Java 类库实现前端 echarts 图表导出到 Word 的详细步骤。

版本:Word:2019,poi-tl:1.10.5,poi:4.1.2

poi-tl 官方文档

引入依赖

注意:poi-tl 版本要和 poi 版本对应上

dependency>
     groupId>org.apache.poigroupId>
     artifactId>poiartifactId>
     version>4.1.2version>
dependency>
dependency>
    groupId>org.apache.poigroupId>
    artifactId>poi-ooxmlartifactId>
    version>4.1.2version>
dependency>
dependency>
    groupId>org.apache.poigroupId>
    artifactId>poi-scratchpadartifactId>
    version>4.1.2version>
dependency>
dependency>
    groupId>com.deepoovegroupId>
    artifactId>poi-tlartifactId>
    version>1.10.5version>
dependency>

实现

主要就是三个步骤:编译模板、渲染数据、输出到流。实际使用实现导出的有条形图、圆环图,堆积条形图、饼图和组合图(柱形 + 折线),熟悉了一个图表的实现流程,再参照官方文档,其他图表也很好实现。下面以实现导出条形图为例,介绍各个步骤的具体实现。

  1. 先准备一个 Word 模板,在模板中插入一个条形图。在条形图上右键,选择 查看可选文字,在文本框中输入 {{chart}}chart 可以理解为图表的 ID,后面渲染数据时会用到。保存文件,格式为 .doc 或者 .docx 都可以,然后放到项目的 templates 目录下即可。

  2. 代码实现。代码不多,但是包含了实现的所有步骤。如需添加其他图表,可以参照官方文档,构建固表模型,再放入 map 中即可。

public void exportWord(HttpServletResponse response) {
    
    InputStream inputStream = null;
    try {
        inputStream = new ClassPathResource("templates/template.doc").getInputStream();
    } catch (IOException e) {
        logger.error("读取 Word 模板失败,原因为:{}",e.getMessage());
        throw new RuntimeException(e);
    }
    
    XWPFTemplate template = XWPFTemplate.compile(inputStream);
    
    ListData> dataList = xxxxx;
    
    ChartMultiSeriesRenderData chart = null;
    if (!CollectionUtils.isEmpty(dataList)){
        chart = Charts
            .ofMultiSeries("图表标题", dataList.stream()
                           .map(Data::getDataName)
                           .collect(Collectors.toList())
                           .toArray(new String[dataList.size()]))
            .addSeries("系列名称", dataList.stream()
                       .map(Data::getDataValue)
                       .collect(Collectors.toList())
                       .toArray(new Double[dataList.size()]))
            .create();
    }
    
    MapString,Object> dataMap = new HashMap>();
    dataMap.put("chart", chart); 
    
    template.render(dataMap);
    try {
        
        response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-					officedocument.wordprocessingml.document;charset=UTF-8");
        response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName + ".doc");
        OutputStream outputStream = response.getOutputStream();
        template.writeAndClose(outputStream);
    } catch (Exception e){
        e.printStackTrace();
    }
}

注意

  • 多参照官方文档,按照官方文档的步骤来即可
  • poi-tl 和 poi 版本要对应,否则程序执行会报错
  • 图表系列的值只能为 Number[] 类型

原文地址: echarts 图表导出到 Word

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-11-10发表,共计2062字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)