poi画饼图、折线图等图表和设置颜色字体等
简单饼图:
/*** 创建饼图(xlsx格式excel)* @param sheetAt 工作表*/private void createPie(XSSFSheet sheetAt) {// 创建一个画布Drawing<?> drawing = sheetAt.createDrawingPatriarch();//设置画布在excel工作表的位置ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 4, 2, 8, 15);// 创建一个chart对象Chart chart = drawing.createChart(anchor);CTChart ctChart = ((XSSFChart) chart).getCTChart();CTPlotArea ctPlotArea = ctChart.getPlotArea();// 创建圆环图CTPieChart ctPieChart = ctPlotArea.addNewPieChart();CTBoolean ctBoolean = ctPieChart.addNewVaryColors();// 允许自定义颜色ctBoolean.setVal(true);// 设置图表标题CTTitle title = ctChart.addNewTitle();//选择图表标题所在位置,此时titleRange不是单元格内容,而是 --》 '工作表名'!$A$2String titleRange = new CellRangeAddress(0, 0, 0, 0).formatAsString(sheetAt.getSheetName(), true);title.addNewTx().addNewStrRef().setF(titleRange);// 创建序列,并且设置选中区域CTPieSer ctPieSer = ctPieChart.addNewSer();// 设置横坐标区CTAxDataSource cttAxDataSource = ctPieSer.addNewCat();CTStrRef ctStrRef = cttAxDataSource.addNewStrRef();String axisDataRange = new CellRangeAddress(1, 4, 0, 0).formatAsString(sheetAt.getSheetName(), true);ctStrRef.setF(axisDataRange);// 数据区域CTNumDataSource ctNumDataSource = ctPieSer.addNewVal();CTNumRef ctNumRef = ctNumDataSource.addNewNumRef();// 选第1-6行,第1-3列作为数据区域 //1 2 3String numDataRange = new CellRangeAddress(1, 4, 1, 1).formatAsString(sheetAt.getSheetName(),true);ctNumRef.setF(numDataRange);// 设置标签格式CTDLbls newDLbls = ctPieSer.addNewDLbls();
// newDLbls.setShowLegendKey(ctBoolean);newDLbls.setShowVal(ctBoolean);
// newDLbls.setShowCatName(ctBoolean);//显示横坐标(图注)newDLbls.setShowPercent(ctBoolean);// 显示百分比newDLbls.setShowBubbleSize(ctBoolean);// 显示纵坐标(数量)newDLbls.setShowLeaderLines(ctBoolean);// 显示线// legend图注CTLegend ctLegend = ctChart.addNewLegend();ctLegend.addNewLegendPos().setVal(STLegendPos.B);//将图注放在下面(Bottom)ctLegend.addNewOverlay().setVal(false);// 显示图注但不与图表重叠}
效果:
简单折线图:
未完待续
设置标题颜色、字体大小等:
CTTitle ctTitle = ctChart.addNewTitle();
ctTitle.addNewOverlay().setVal(false);// true时与饼图重叠
ctTitle.addNewTx().addNewRich().addNewBodyPr();
CTTextBody rich = ctTitle.getTx().getRich();
rich.addNewLstStyle();
CTRegularTextRun newR = rich.addNewP().addNewR();
newR.setT(sheetName);
newR.addNewRPr().setB(false);
XmlBoolean xmlBoolean = XmlBoolean.Factory.newInstance();
xmlBoolean.setStringValue("0");
newR.getRPr().xsetB(xmlBoolean);//是否加粗
//newR.getRPr().setLang("zh-CN");
//newR.getRPr().setAltLang("en-US");
newR.getRPr().setSz(1400);//字体大小
设置饼图的每个块的颜色:
// 创建序列,并且设置选中区域
CTPieSer ctPieSer = ctPieChart.addNewSer();
// 设置区域颜色
for(int i=0;i<pies.size();i++) {CTDPt dPt = ctPieSer.addNewDPt();STHexBinary3 hex=STHexBinary3.Factory.newInstance();if(i==0) {hex.setStringValue("5B9BD5");}else {hex.setStringValue(pies.get(i).getColor());//color为颜色的十六进制去除#}dPt.addNewIdx().setVal(i);dPt.addNewSpPr().addNewSolidFill().addNewSrgbClr().xsetVal(hex);
}
设置折线的颜色:
CTLineSer ctLineSer = ctLineChart.addNewSer();
STHexBinary3 hex = STHexBinary3.Factory.newInstance();
if (i == 0) {//我这里是画了三条折线所以设置了三种颜色hex.setStringValue("92D050");
} else if (i == 1) {hex.setStringValue("FFFF00");
} else if (i == 2) {hex.setStringValue("FF0000");
}
ctLineSer.addNewSpPr().addNewLn().addNewSolidFill().addNewSrgbClr().xsetVal(hex);
设置纵坐标
// val axis
CTValAx ctValAx = ctPlotArea.addNewValAx();
ctValAx.addNewAxId().setVal(123457); // id of the val axis
ctScaling = ctValAx.addNewScaling();
ctScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);// 设置坐标轴从小到大从下往上排列
ctScaling.addNewMin().setVal(minDiameter);// 设置纵坐标最小值
ctScaling.addNewMax().setVal(maxDiameter);// 设置纵坐标最大值
ctValAx.addNewAxPos().setVal(STAxPos.L);
ctValAx.addNewCrossAx().setVal(123456); // id of the cat axis
ctValAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);
ctValAx.addNewMajorGridlines().addNewSpPr();// 设置网格
//ctValAx.addNewMajorUnit().setVal(0.01);//设置主要刻度线之间距离为0.01
ctValAx.addNewMajorTickMark().setVal(STTickMark.NONE);// 设置主要刻度线类型无;(Major:主要刻度线 Minor:次要刻度线)
//设置纵坐标标题
//ctValAx.addNewTitle().addNewTx().addNewStrRef()
//.setF(new CellRangeAddress(1, 1, 6, 6).formatAsString(sheetAt.getSheetName(), true));ctValAx.addNewSpPr().addNewLn().addNewNoFill();
poi画饼图、折线图等图表和设置颜色字体等相关推荐
- VBA,单元格处理,数据复制,格式设置,折线图,图表属性设置
首先说一下.xlsm文件和.xlsx文件的区别: .xlsx文件只能存储数据,不能存储对数据进行处理的VB代码,而.xlsm文件既可以存储数据,又可以存储代码. 新建一个.xlsm文件(打开.xlsx ...
- Poi 如何使用Java和POI技术生成折线图,柱状图,饼状图导出到word文档
这篇文章主要介绍POI生成图表并导出word文档的基本操作.主要介绍三种图表:折线图.柱状图.饼状图. 一.效果展示 使用Java和POI技术生成的折线图,柱状图,饼状图的效果如下图所示: 二.环境准 ...
- 画Excel折线图的一点记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.画Excel折线图的一点记录 二.步骤 提示:以下是本篇文章正文内容,下面案例可供参考 一.画Excel折线图的一点记录 ...
- matplotlib画的折线图
文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼:我热爱编程.热爱算法.热爱开源.所有源码在我的个人github :这博客是记录我学习的点点滴滴,如果您对 Python.Java.AI ...
- 蓝色数据分析关系折线图表格图表合集PPT模板
模板介绍 精美PPT模板设计,蓝色数据分析关系折线图表格图表合集PPT模板.一套可视图表幻灯片模板,内含青色,黑色多种配色,精美风格设计,动态播放效果,精美实用. 一份设计精美的PPT模板,可以让你在 ...
- python_pyecharts画三维折线图
1.摘要 本文主要讲解:使用python中的pyecharts画三维折线图 主要思路: 将数据处理成[[x-],[y-],[z-]]的形式 使用Line3D函数渲染 2.数据介绍 数据为简单的三维数据 ...
- python plt 画动态折线图
python plt 画动态折线图 # coding=utf-8import matplotlib.pyplot as plt import numpy as npdef main():plt_lis ...
- echarts柱状图 饼图 折线图
最近大屏项目里做的 首先看看效果 这几个图 我将其标为七个部分 下方成为echarts1,echarts2往后类推 有需要 可以直接拷贝下方代码 推荐一个朋友最近发我的echarts图形地址 ...
- python简单代码画曲线图教程-用Python画论文折线图、曲线图?几个代码模板轻松搞定!...
前言 这几天在搞论文图,唉说实话抠图这种东西真能逼死人.坐在电脑前抠上一天越看越丑,最后把自己丑哭了-- 到了画折线图分析的时候,在想用哪些工具的时候.首先否决了excel,读书人的事,怎么能用exc ...
最新文章
- 【Cocosd2d实例教程二】地图编辑器Tiled的安装使用
- 【华为云技术分享】云小课 | 初识HiLens Kit,解锁更多智慧应用场景
- 赣南师范学院数学竞赛培训第10套模拟试卷参考解答
- asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...
- lnmp升级PHP环境
- html中怎么加入动态图片,视频加动态水印 怎么在视频画面中添加一个gif动态图片水印...
- Hybrid Astar 算法剖析和实现(二)
- php版ueditor配置_ThinkPHP配置UEditor
- 如何使用Windows10自带的photo应用给视频添加字幕
- 小志志和小峰峰的日常(SG函数)
- 第8节_数据筛选过滤
- 百万册热销书《考试脑科学》续作!每个家长都应该买的一本书
- spring boot 獲取屏幕寬度_Redmi K30S至尊纪念版的屏幕有多好?有些吓人
- 中星9号卫星PK中星6B+鑫诺3号组合
- 如何把下载好的歌曲进行剪切
- Flutter入门实战:从0到1仿写web版掘金App
- Linux Mint 19 下体验Vagrant +VirtualBox
- nested exception is org.apache.ibatis.binding.BindingException:
- 【墨天轮专访第四期】华为云GaussDB苏光牛:发挥生态优势,培养应用型DBA
- 旧电脑装html5,5年以上旧电脑如何升级