1.poi的简介

Apache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。

官方主页: http://poi.apache.org/index.html
API文档: http://poi.apache.org/apidocs/index.html

2.导包

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>

此处导包推荐4.1.2及以上,由于项目中还使用了easyword,easyexcel,spire.doc等在poi上扩展的包,他们中都含有poi的包。因此我把这个包放在了最前面可以防止报错与冲突。可以看到下图除4.1.2版本外,还有其他各种版本,如果将此版本放在后面,会出错无法成功显示(但不会报错,这种错误极其难排查)。

3.核心代码与操作

3.1绘制折线图的核心方法

此方法不需要改,只需要输入参数即可。第一个参数是图表,第二个参数是线的名称,第三个是x轴,第四个是y轴,最后一个是图表的名称

//折线图的生成public static void drawLineChart(XWPFChart chart, String[] series, String[] categories,List<Number[]> values, String chartTitle){final List<XDDFChartData> data = chart.getChartSeries();final XDDFLineChartData line = (XDDFLineChartData) data.get(0);//这里一般获取第一个,我们这里是折线图就是XDDFLineChartDatafinal int numOfPoints = categories.length;final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 0, 0));final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, 0);for (int i = 0; i < values.size(); i++) {final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, i + 1, i + 1));Number[] value = values.get(i);final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(value, valuesDataRange, i + 1);XDDFChartData.Series ser;//图表中的系列ser = line.getSeries().get(i);ser.replaceData(categoriesData, valuesData);CellReference cellReference = chart.setSheetTitle(series[i], 1);//修改系列标题ser.setTitle(series[i], cellReference);}chart.plot(line);chart.setTitleText(chartTitle);//折线图标题chart.setTitleOverlay(false);}

3.2 模板的设置

需要在word中打开设置模板。插入选择图表。选择图表。

图表中选择折线图

本处测试2条折线图

public class main {@Testpublic void printChart(){String templatePath = "src/main/resources/static/test.docx";XWPFDocument doc=null;try{InputStream is = new FileInputStream(new File(templatePath));doc = new XWPFDocument(is);}catch (Exception e){System.out.println(e);}String[] series1 = {"测试折线1","测试折线2","测试折线3"};//每条线的名称String[] series2 = {"测试折线"};//String title1="测试折线图1";String title2="测试折线图2";//y轴List<Number[]> value1 = new ArrayList<>();//每一条折现图,第一个表3条,需要和图中条数一样List<Number[]> value2 = new ArrayList<>();//每一条折现图,第二个表1条//第一张图的y轴Number[] n1={1,2,3,5};Number[] n2={4,2,1,4};Number[] n3={5.8,6.2,1,0.2};value1.add(n1);value1.add(n2);value1.add(n3);//第二张图的y轴Number[] n={0.3,-5.4,2.0,-1.2};value2.add(n);//x轴String[] x1={"1","2","3","4"};String[] x2={"a","b","c","d"};XWPFChart xChart1 = doc.getCharts().get(0);//获取第1个图表XWPFChart xChart2 = doc.getCharts().get(1);//获取第2个图表drawLineChart(xChart1,series1,x1,value1,title1);drawLineChart(xChart2,series2,x2,value2,title2);try (FileOutputStream fos = new FileOutputStream(templatePath)) {doc.write(fos);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

3.效果图

java利用POI在word中绘制折线图相关推荐

  1. java利用POI替换word文档中的标签

    java利用POI替换word文档中的标签 <dependency><groupId>org.apache.poi</groupId><artifactId& ...

  2. Java利用poi生成word(包含插入图片,动态表格,行合并)

    Java利用poi生成word(包含插入图片,动态表格,行合并) 测试模板样式: 图表 1 Word生成结果: 图表 2 需要的jar包:(具体jar可自行去maven下载) Test测试类: imp ...

  3. java使用poi读写word中的图片(二)

    文章目录 准备工作 简单读取 复杂读取 查看Word的XML 特别说明:Word中的Svg图片 第一种写入图片到Word中的方式 第二种写入图片到Word中的方式 最后 准备工作 这里就不在复述了,可 ...

  4. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换、更新内置Excel数据、更新插入的文本框内容、合并表格单元格;

    本文参考地址:https://blog.csdn.net/wangxiaoyingWXY/article/details/95377533 在参考文章的基础上,增加了扩展.感谢被参考的妹子.另外该博客 ...

  5. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换 springboot项目

    本文参考地址:https://blog.csdn.net/u014427811/article/details/100771314 在参考文章的基础上,增加了模板样例 模板样例地址 百度网盘 链接:h ...

  6. 【JAVA - POI 合集】之 POI 操作word 图表,柱状图,折线图,雷达图,条形图 poi4.1.2

    1.前言 关于poi 操作word 的吐槽: 山路崎岖, 一言难尽啊!!! 原本项目中的poi 版本是3.17的版本,但是3.17对于在word 中操作图表是有问题的.所以对项目的jar 包进行了升级 ...

  7. java利用poi导出word文档

    项目中,有时候需要使用poi实现将固定数据导入word中 效果图: 代码: package poiword;import java.io.File; import java.io.FileOutput ...

  8. python中绘制折线图s是什么意思_python用pandas和matplotlib画折线图和条形图

    一.数据 数据是支付宝上收益周周乐从2019年9月21日到2020年3月21日共27期开奖结果,做此次分析是为了提高中奖的几率, 二.代码 1:pandas读取csv文件 import pandas ...

  9. Java 利用poi给word添加页眉页脚,页眉左边为公司logo图片,右为公司全称,页脚左为公司地址,右为页码总页数

    参考链接: http://www.it1352.com/219785.html 1. 生成带公司logo的页眉 public void createHeader(XWPFDocument doc, S ...

最新文章

  1. 迭代是人,递归是神(迭代与递归的总结:比较)
  2. hdu 4468 spy 极其精彩的一道kmp灵活运用题
  3. java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
  4. 高德地图如何将比例尺放大到10米?
  5. Git submodule 的笔记
  6. mac安装python环境教程_python mac下安装虚拟环境的图文教程
  7. mysql聚簇索引 和主键的区别_[MySQL] innoDB引擎的主键与聚簇索引
  8. 震惊! Leftmost Digit
  9. MiniFlow,帮助理解TensorFlow关键概念--图
  10. 导航菜单UI设计中的作用,优秀案例临摹起来!
  11. Algs4-1.3.10中序表达式转为后序表达式(第二次实现)
  12. 求求你,别再叫我 X 工了!!!
  13. win10鼠标主题linux,大师还原win10系统安装鼠标指针主题包的操作步骤
  14. 虚函数指针 虚函数表
  15. TI Simplelinke_CC13X0_SDK_2.10.00.36 (Error -241 @ 0x0)
  16. 利用Greenfoot制作简单的小游戏——记忆翻牌游戏(三)
  17. BZOJ 2752 [HAOI2012]高速公路(road):线段树【维护区间内子串和】
  18. 数仓工具—Hive实战之占比同比环比(10)
  19. P and V
  20. 服务器虚拟机化对应云计算的,服务器虚拟化与云计算

热门文章

  1. 结束了explorer进程电脑桌面没了
  2. 怎么做好钣金件产品结构设计
  3. 雷军出糗 全球宕机 干扰议会 2018年的智能音箱尴尬往事
  4. Python帮你设计个人签名
  5. 全球掀起AI热,天翼云智算能力已就绪!
  6. 讲解 ssh-keygen -t rsa -b 4096 命令表达的意思
  7. Lanecat网猫的延伸使用(网络监控)
  8. 解决labelImg标注工具打开不了xml文件
  9. 扫描仪 php,紫光扫描仪
  10. 硬核资源!Redis 五种数据结构以及三种高级数据结构解析(详解)