Java 导出时序折线图到Excel代码 记录下

pom.xml中加入相关依赖

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></dependency><!-- https://mvnrepository.com/artifact/jfree/jcommon --><dependency><groupId>jfree</groupId><artifactId>jcommon</artifactId><version>1.0.16</version></dependency><!-- https://mvnrepository.com/artifact/jfree/jfreechart --><dependency><groupId>jfree</groupId><artifactId>jfreechart</artifactId><version>1.0.13</version></dependency>

相关测试代码

import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;public class TestPoiAndJfreeChart {public static void main(String[] args) throws Exception {// excel2003工作表HSSFWorkbook wb = new HSSFWorkbook();// 创建工作表HSSFSheet sheet = wb.createSheet("超滤量");// 创建字节输出流ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();//如 果不使用Font,中文将显示不出来Font font = new Font("新宋体", Font.BOLD, 15);// 创建数据// 创建第一条时序线TimeSeries pop1 = new TimeSeries("实际超滤量", Day.class);pop1.add(new Day(25, 10, 2021), 1.43D);//Day(日,月,年) pop1.add(new Day(27, 10, 2021), 1.75D);pop1.add(new Day(29, 10, 2021), 1.94D);pop1.add(new Day(1, 11, 2021), 2.55D);pop1.add(new Day(3, 11, 2021), 1.77D);pop1.add(new Day(5, 11, 2021), 1.64D);pop1.add(new Day(8, 11, 2021), 2.49D);pop1.add(new Day(10, 11, 2021), 1.26D);// 创建第二条时序线TimeSeries pop2 = new TimeSeries("目标超滤量", Day.class);pop2.add(new Day(25, 10, 2021), 3.2D);pop2.add(new Day(27, 10, 2021), 2.2D);pop2.add(new Day(29, 10, 2021), 2.2D);pop2.add(new Day(1, 11, 2021), 3D);pop2.add(new Day(3, 11, 2021), 2D);pop2.add(new Day(5, 11, 2021), 1.8D);pop2.add(new Day(8, 11, 2021), 2.8D);pop2.add(new Day(10, 11, 2021), 1.8D);// 创建一个时序集合TimeSeriesCollection dataset = new TimeSeriesCollection();dataset.addSeries(pop1);dataset.addSeries(pop2);JFreeChart chart = createPort("超滤量", dataset, "日期", "", font);// 读取chart信息至字节输出流ChartUtilities.writeChartAsPNG(byteArrayOut, chart, 1500, 600);// 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)HSSFPatriarch patriarch = sheet.createDrawingPatriarch();// anchor主要用于设置图片的属性HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) 2, 1, (short) 20,  25);anchor.setAnchorType(3);// 插入图片patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));// excel2003后缀  文件生成位置FileOutputStream fileOut = new FileOutputStream("D://myExcel10.xls");wb.write(fileOut);fileOut.close();}public static JFreeChart createPort(String title, TimeSeriesCollection dataset, String type, String unit, Font font) {try {JFreeChart chart = ChartFactory.createTimeSeriesChart(title,type,unit,dataset,true,true,false);// 设置日期显示格式XYPlot plot = chart.getXYPlot();DateAxis axis = (DateAxis) plot.getDomainAxis();axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd"));//设置整个图片的标题字体chart.getTitle().setFont(font);//设置提示条字体font = new Font("宋体", Font.BOLD, 15);chart.getLegend().setItemFont(font);//得到绘图区的域轴(横轴),设置标签的字体plot.getDomainAxis().setLabelFont(font);//设置横轴标签项字体plot.getDomainAxis().setTickLabelFont(font);//设置范围轴(纵轴)字体font = new Font("宋体", Font.BOLD, 18);plot.getRangeAxis().setLabelFont(font);return chart;} catch (Exception e) {e.printStackTrace();return null;}}}

运行测试结果截图如下:

其中导出到excel的图片大小调整代码:

// 读取chart信息至字节输出流 调整最后两个参数,影响横轴和纵轴的数据显示的疏密度。
ChartUtilities.writeChartAsPNG(byteArrayOut, chart, 1500, 600);
// anchor主要用于设置图片的属性 这里的属性说明参考:https://www.cnblogs.com/sunyl/p/7527703.html
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) 2, 1, (short) 20,  25);

HSSFClientAnchor的属性参考 :https://www.cnblogs.com/sunyl/p/7527703.html

Java 导出时序折线图到Excel相关推荐

  1. java实现将数据生成图表至excel导出(包括折线图,柱状图,饼状图)

    1. 目的 根据已有数据,手动(java后台)生成图表至excel并导出.用于后台查询到数据后直接创建图表,可以代替直接使用图表信息字符串. 2. 说明 使用jfree图表绘制类库绘制图表,并生成到本 ...

  2. java_excel导出带折线图饼图之类

    根据数据生成对应图片 再将图片插入到excel之中 package com.sunwe.emview.util;/*** @author tqf* @Description* @Version 1.0 ...

  3. java导出数据生成图表至excel

    使用jfree图表绘制类库绘制图表,并生成到本地或读取至输出流用于在excel中生成: 使用poi操作excel: 依赖 使用maven管理jar包,主要包含poi和jfree: <!-- PO ...

  4. Java导出2003、2007版Excel

    创建用于添加表头的实体类 /*** excel导出标题显示值* @author Terisadeng**/ public class KeyValue {private String key;priv ...

  5. 坐标轴删了怎么恢复_EXCEL表折线图已经删掉的图例怎么恢复 - 卡饭网

    excel里折线图的横坐标怎样设置? excel里折线图的横坐标怎样设置? excel里折线图的横坐标怎样设置?下面小编带来了设置方法,希望对大家有所帮助. 设置方法: 以下面这个年份和销售量的数据为 ...

  6. poi导出excel文件,并生成原生图表(包括折线图,柱状图,饼状图,面积图)

    前段时间,因为客户需要,要做一个导出excel文件功能,并能生成原生的图表的(不是把图片插入到excel文档),找了很多文档看,也看了很多别人的代码,个人也总结了一下,不足之处,请各位大牛谅解. 需要 ...

  7. Java使用Poi实现导出Word段落以及表格,XWPFParagraph和XWPFRun详解,生成目录,生成折线图、柱状图、饼状图

    导出段落 public void exportSummarizeWord(HttpServletResponse response, Integer id) {Summarize summarize ...

  8. vue 列表、查询、折线图、导出excel

    具体细节: 列表:分页.序号列.v-if条件展示 查询:日/月/年报下拉菜单.后台回显数据下拉菜单.日/月/年/时间选择器 折线图:echarts插件.多条折线图 导出excel: 页面: vue: ...

  9. echarts画折线图和数据excel导出

    最近一直使用echarts画折线图,在此做个记录 最后样式 代码 <!DOCTYPE html> <html style="height: 100%">&l ...

  10. java实现 移动平均值 复杂度,在EXCEL折线图里增加平均线和上下限|excle统计图怎设置上下限...

    excel折线图怎么插入上下限 以Excel2016版本为例: 1.首先选中数据单元点击"插入"选项. 2击插入图表中的"折线图",将其插入到中. 3.右键点击 ...

最新文章

  1. 卡顿严重_魔兽怀旧服:安其拉开门二测结果出炉,暴雪依然无法解决卡顿问题...
  2. python高阶函数(abs()、round()、map()、reduce()、filter())
  3. TI PDK3.0 qt 交叉编译环境设置
  4. 第十六届智能汽车竞赛AI视觉组分赛区数据集发布
  5. 大数据学习——:wq不能退出vi编辑器
  6. 在电脑上安装python的步骤-python中pygame安装过程(超级详细)
  7. TortoiseSVN 的 bin 目录下面没有 svn.exe(已测试)
  8. php detect unicode,php-functions/unicode.php at master · xiilei/php-functions · GitHub
  9. 转:C# 线程同步技术 Monitor 和Lock
  10. Linux 命令之 touch -- 创建文件
  11. linux 下php多版本安装
  12. Sentinel 1.7.0 发布,支持 Envoy 集群流量控制
  13. 编码规范 | Java函数优雅之道(上)
  14. matlab 随机森林 分类,randomforest-matlab 随机森林分类器的MATLAB代码 - 下载 - 搜珍网...
  15. 手机红外鸿蒙,小技巧轻松解析红外光谱图,后悔没早知道
  16. 升级opengl和显卡驱动_opengl驱动 OpenGL版本或显卡驱动版本太低的解决方法介绍_网络-游戏圈...
  17. 年终盘点 | 2020年最佳CV论文速览「AI核心算法」
  18. ORB特征点提取与均匀化——ORBSLAM2源码讲解(一)
  19. Excel股票分析工具_每日连板清单
  20. 单周期MIPS CPU设计

热门文章

  1. 计算机表格的条件公式,电脑Excel输出时如何进行多条件判断
  2. 中文论文检索证明怎么开_论文检索证明在哪里弄
  3. 结果公示!400名博硕士获“优秀学位论文”奖!
  4. JAVA购物网站商城系统毕业设计 开题报告
  5. VMware Workstation -- 破解密码
  6. jquery左侧图片与右侧图片以及放大镜和图片的放大的图片和产品的隐藏的效果
  7. python123第三次作业的解答
  8. 京东返利PHP采集关键字,PHP实现京东API的授权HASH算法
  9. 圆排列公式推导_数学广角早在公元三世纪,我国数学家刘徽为推导圆的面积公式而发明了 爱问知识人...
  10. android 点击事件失效,安卓手机微信自带浏览器点击事件失效解决