poi官方文档地址

参考资料

参考了其他人的写法,加入了我自己的一些注释,额外加了几个方法。

@Testvoid chartTest() throws IOException {Workbook wb = new XSSFWorkbook();Sheet sheet = wb.createSheet("linechart");final int NUM_OF_ROWS = 2; //总列数final int NUM_OF_COLUMNS = 10;//总行数int arr [] = {1,5,6,3,9,8,50,26,36,54};// Create a row and put some cells in it. Rows are 0 based.Row row;Cell cell;for (int rowIndex = 0; rowIndex < NUM_OF_ROWS; rowIndex++) {row = sheet.createRow((short) rowIndex);for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {cell = row.createCell((short) colIndex);cell.setCellValue(arr[colIndex]);//设置每一行每一列的值}}Drawing drawing = sheet.createDrawingPatriarch();ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 12, 0, 20, 10);//设置图表在excel中的位置//设置系列名称显示的位置Chart chart = drawing.createChart(anchor);ChartLegend legend = chart.getOrCreateLegend();legend.setPosition(LegendPosition.TOP);LineChartData data = chart.getChartDataFactory().createLineChartData();//使用类别轴作为下轴ChartAxis bottomAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM);ValueAxis leftAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT);leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);//X轴数据源ChartDataSource<Number> xs = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));//Y轴数据源ChartDataSource<Number> ys1 = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1));data.addSeries(xs, ys1);List<LineChartSeries> lineChartSeries = (List<LineChartSeries>) data.getSeries();lineChartSeries.get(0).setTitle("测试项目1");//设置系列名称,有几条线就设置几个chart.plot(data, bottomAxis, leftAxis);// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("D://pdfLoc/chartTest.xlsx");wb.write(fileOut);fileOut.close();}

效果图

自己编写了一个工具类。

/*** 创建折线图* @param wb  XSSFWorkbook* @param sheetName sheet名称* @param chartLoc 图表位置* @param XAxis x数据源范围* @param YAxisList y数据源范围,list类型是可以有多个* @param productName 系列名称*  YAxisList.size()和 productName.size()  必须相等* @return*/public static XSSFWorkbook creatLineCharts(XSSFWorkbook wb,String sheetName,WookBookVo chartLoc,WookBookVo XAxis,List<WookBookVo> YAxisList,List<String> productName){Sheet sheet = wb.getSheet(sheetName);//final int NUM_OF_ROWS = totalRows; //总列数//final int NUM_OF_COLUMNS = totalCols;//总行数Drawing drawing = sheet.createDrawingPatriarch();ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, chartLoc.getStartCol(), chartLoc.getStartRow(), chartLoc.getEndCol(), chartLoc.getEndCol());//设置图表在excel中的位置//设置系列名称显示的位置Chart chart = drawing.createChart(anchor);ChartLegend legend = chart.getOrCreateLegend();legend.setPosition(LegendPosition.TOP);LineChartData data = chart.getChartDataFactory().createLineChartData();//使用类别轴作为下轴ChartAxis bottomAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM);ValueAxis leftAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT);leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);//X轴数据源ChartDataSource<Number> xs = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(XAxis.getStartRow(), XAxis.getEndRow(), XAxis.getStartCol(), XAxis.getEndCol()));for (WookBookVo vo: YAxisList) {//Y轴数据源ChartDataSource<Number> ys = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(vo.getStartRow(), vo.getEndRow(), vo.getStartCol(), vo.getEndCol()));data.addSeries(xs, ys);}List<LineChartSeries> lineChartSeries = (List<LineChartSeries>) data.getSeries();for (int i = 0;i< productName.size();i++){lineChartSeries.get(i).setTitle(productName.get(i));//设置系列名称,有几条线就设置几个}chart.plot(data, bottomAxis, leftAxis);return wb;}

如何在Excel中创建一个折线图?相关推荐

  1. 青蛙换位置excel_吃青蛙:如何在Excel中创建每日交付的sprint消耗图

    青蛙换位置excel In the first article I wrote on how to create a SCRUM-based, sprint burn down in Excel, H ...

  2. 创建jira sprint_如何在Excel中创建高级sprint燃尽图

    创建jira sprint SCRUM is a great way to manage all sorts of tasks including sprints, but you don't hav ...

  3. 如何在xshell中创建一个SSH隧道

    之前讲过如何使用SSH协议连接远程,本集Xshell教程小编将深入讲解如何在xshell中创建一个SSH隧道. 在开始之前,请确保远程主机上的SSH服务器已经启用了X11 Forwarding.设置完 ...

  4. PS网页设计教程V——如何在Photoshop中创建一个商业网站布局

    作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,"熟读唐诗三百首,不会作诗也会吟". 本系列的教程来源于网上的PS教程,都是国外的 ...

  5. PS网页设计教程XV——如何在Photoshop中创建一个充满活力的作品集的网页设计

    作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,"熟读唐诗三百首,不会作诗也会吟". 本系列的教程来源于网上的PS教程,都是国外的 ...

  6. Microsoft Excel 教程:如何在 Excel 中创建公式并使用内置函数执行计算?

    欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel 的使用技巧,了解如何在 Excel 中创建公式并使用内置函数执行计算. Excel 中的计算方式始终以等 ...

  7. PS网页设计教程IV——如何在Photoshop中创建一个专业博客网站布局

    向Talk-Mania网站致敬.一年前,在该网站上看过许多不错的网页设计教程.一年后,再回头想看看有没有什么新的教程的时候,蓦然发现该网站已经打不开了.也许是关闭了,也许是改了网站名了.幸好,去年本人 ...

  8. 如何在Java中创建一个新的List

    本文翻译自:How to make a new List in Java We create a Set as: 我们创建一个Set为: Set myset = new HashSet() How d ...

  9. 如何在Joomla中创建一个漂亮的单页网站

    我们都知道一个好的网站对于建立企业信誉的重要性.但是,在拥有统一的单页网站和多页网站的选项之间进行选择可能会很棘手.特别是如果您是 Joomla 和 Web 开发的新手. 随着移动和社交媒体用户的增加 ...

最新文章

  1. python 使用UUID库生成唯一ID
  2. 在mpvue中引用vant weapp
  3. Reactor设计模式
  4. 鸿蒙系统笔记本价格,鸿蒙系统手机华为P50将明年3月发售,华为P40价格骤降至冰点...
  5. 位置问题_改变铸件浇注入水位置,能解决哪些问题?
  6. c#发送邮件,可发送多个附件
  7. 图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波
  8. 启动时不自动打开一个空文档
  9. 字母串按照字典序排序
  10. 【转】关于23种设计模式的有趣见解
  11. unity 安装失败:operation not permitted, mkdir......
  12. Android多功能视频播放器GSYVideoPlayer开发流程
  13. 书中第十章货币实验Currencies App在openexchangerates.org上的开发者密钥
  14. 维基链WICC | 项目进展周报第57期(1.6~1.12)
  15. vscode open with live server 打不开浏览器 显示 windows找不到‘chrome’,请确定文件名是否正确后,再试一次
  16. 数学中常见的maxmin,min max
  17. 查看思科交换机出厂时间
  18. morris算法(莫里斯遍历) [数据结构与算法]
  19. uni-app 弹幕插件
  20. 【C语言基础-」TurboC环境】-」bioskey函数详细分析

热门文章

  1. HTML5网页设计样式-CSS基础知识
  2. RevitAPI之草图及草图平面
  3. 【动手学树莓派】案例实操:点亮你的第一个LED(重点)
  4. 并发与并行概念认知(并发性不是并行性(并行性更好))
  5. double、long、unsigned、int、char类型数据所占字节数(C语言)
  6. Windows arp静态绑定
  7. 企业衡量求职者简历的标准
  8. 了解Sidecar模式
  9. 支付业务的数据库表的设计
  10. 一份干货|mCore虽小,五脏俱全