poi 操作 PPT,针对 PPTX--图表篇
poi 操作 PPT,针对 PPTX--图表篇
接下来对 ppt 内的图表进行操作,替换图表的数据
原幻灯片样式

1、读取 PPT 模板
String filePath = "C:\\Users\\HONOR\\Desktop\\xsmb.pptx";
String exportPath = "C:\\Users\\HONOR\\Desktop\\a.pptx";
// 读取 ppt 模板
PPTUtil pptUtil = new PPTUtil(filePath);
2、替换标题
@Test
public void testDemo() {
// 读取 ppt
PPTUtil pptUtil = new PPTUtil(filePath);
// 获取第二页幻灯片中的第一个图表,该幻灯片中只有一个图表
XSLFChart chart = pptUtil.getChartFromSlide(pptUtil.getSlides().get(1));
// 获取标题
XSLFTextShape titleShape = chart.getTitleShape();
// 打印该图表的标题
System.out.println(titleShape.getText());
// 重新设置图表标题
XSLFTextParagraph textParagraph = pptUtil.setChartTitle(titleShape, false);
pptUtil.addParagraphText(textParagraph, false, "销售统计表1-修改标题后", true, "微软雅黑", "微软雅黑", "18");
// 写入到新的文件
pptUtil.writePPT(exportPath);
}
输出:
销售统计表1
设置后效果

4、替换图表数据
@Test
public void testDemo() {
PPTUtil pptUtil = new PPTUtil(filePath);
// 从第二张幻灯片中获取第一个图表
XSLFChart chart = pptUtil.getChartFromSlide(pptUtil.getSlides().get(1));
// 存放数据
List<List<String>> data = new ArrayList<List<String>>();
List<String> tempData1 = new ArrayList<String>();
List<String> tempData2 = new ArrayList<String>();
// 构造数据
for (int i = 0; i < 11; i++) {
tempData1.add("标签" + (i + 1));
tempData2.add((i + 1) + "");
}
data.add(tempData1);
data.add(tempData2);
// 替换第一个柱状图的数据
pptUtil.updateBarCat(pptUtil.getBarChartFromChart(chart).get(0), 0, data); // 替换 cat
pptUtil.updateBarDataCache(pptUtil.getBarChartFromChart(chart).get(0), 0, tempData2); // 替换数据缓存
// 替换第二个柱状图的数据
pptUtil.updateBarCat(pptUtil.getBarChartFromChart(chart).get(0), 1, data); // 替换 cat
pptUtil.updateBarDataCache(pptUtil.getBarChartFromChart(chart).get(0), 1, tempData2); // 替换数据缓存
// 替换第一个折线图的数据
pptUtil.updateLineCat(pptUtil.getLineChartFromChart(chart).get(0), 0, data); // 替换 cat
pptUtil.updateLineDataCache(pptUtil.getLineChartFromChart(chart).get(0), 0, tempData2); // 替换数据缓存
// 替换第二个折线图的数据
pptUtil.updateLineCat(pptUtil.getLineChartFromChart(chart).get(0), 1, data); // 替换 cat
pptUtil.updateLineDataCache(pptUtil.getLineChartFromChart(chart).get(0), 1, tempData2); // 替换数据缓存
pptUtil.writePPT(exportPath);
}
替换后效果

这里强调一下,如下图,因为两个柱状图是属于同一个y轴的,所以 pptUtil.getBarChartFromChart(chart).get(0) 方法就能获取到两个柱状图,只是这两个柱状图是属于同一个柱状图 barChart 里面的不同 serials(系列) 里面。

注:如果两个柱状图属于两个不同的轴,那么这两个柱状图就在两个不同的 barChart 里面。
PPTUtil 工具地址:https://gitee.com/livekeys/officetool.git
(目前只支持更新饼图,折线图,柱状图,雷达图,使用方法后续继续更新),有问题请联系我。
poi 操作 PPT,针对 PPTX--图表篇的更多相关文章
- java poi 操作ppt
java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...
- Java 利用POI操作PPT
解析PPT文件中的图片 import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hslf.HSLFSli ...
- 使用POI操作PPT文档(插入文本、图片)转
1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片如下代码创建空的PPT文档: SlideShow ppt ...
- 全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)
POI 与 Microsoft Office 1. POI 简介 POI 是 Apache 下的 Jakata 项目的一个子项目,主要用于提供 java 操作 Microsoft Office 办公套 ...
- C++通过COM接口操作PPT
一. 背景 在VS环境下,开发C++代码操作PPT,支持对PPT模板的修改.包括修改文本标签.图表.表格.满足大多数软件生成PPT报告的要求,先手工创建好PPT模板,在程序中修改模板数据. 二. 开发 ...
- Jacob操作ppt
前几天使用Apache 的POI操作ppt,后来发现转成的图片出现乱码,而且处理了之后,还会有遗留 因此决定换一种处理方式 Jacob 是 JAVA-COM Bridge的缩写,是一个中间件,能够提供 ...
- Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包
可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...
- poi操作excel的基本用法
这周公司要用excel作为数据存储格式做一个文具申请的功能,感觉以前本来很简单的功能变复杂了不少,但是还是记录一下一些excel的基本用法. 写在最前面:这里只介绍一些excel的基本存储方式(读,写 ...
- JAVA通过COM接口操作PPT
一. 背景说明 在Eclipse环境下,开发JAVA代码操作PPT,支持对PPT模板的修改.包括修改文本标签.图表.表格.满足大多数软件生成PPT报告的要求,即先收工创建好模板,在程序中修改模板数据. ...
随机推荐
- 一条sql语句的执行过程
一条select语句执行流程 第一步:连接器 连接器负责跟客户端建立连接.获取权限.维持和管理连接.如果用户名密码验证通过后,连接器会到权限表里面查出你拥有的权限.之后该连接的权限验证都依赖于刚查出来 ...
- 鸿蒙的js开发部模式16:鸿蒙布局Grid网格布局的应用一
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口]目录:1.Grid简介2.使用Grid布局实现的效果3.grid-row-gap和grid-colunm-gap属性4.< ...
- 【经验】Rufus制作Win10启动盘支持UEFI:比使用UltraISO(软碟通)制作Win10操作系统U盘启动盘更快捷的工具完整教程-
ultraiso中文称之为软碟通,是一款功能强大的光盘映像文件制作/编辑/转换工具,通过它,用户可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文件制作 ...
- javascript中的模块系统
目录 简介 CommonJS和Nodejs AMD异步模块加载 CMD ES modules和现代浏览器 在HTML中使用module和要注意的问题 简介 在很久以前,js只是简单的作为浏览器的交互操 ...
- Python 元类编程实现一个简单的 ORM
概述 什么是ORM? ORM全称"Object Relational Mapping",即对象-关系映射,就是把关系数据库的一行映射为一个对象,也就是一个类对应一个表,这样,写代码 ...
- VSCode添加用户代码片段,自定义用户代码片段
在使用VScode开发中经常会有一些重复使用的代码块,复制粘贴也很麻烦,这时可以在VScode中添加用户代码片段,输入简写即可快捷输入. VScode中添加用户自定义代码片段很简单. 1.在VScod ...
- 【Azure 应用服务】Azure App Service 自带 FTP服务
问题描述 Azure PaaS服务是否有FTP/S服务呢? 回答问题 应用服务(Web App/App Service)在创建时候,默认创建了FTP服务并自动开启,用于应用部署.但它不是适合作为FTP ...
- 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...
- IDEA的注册方式
http://idea.lanyus.com/ 使用前请将"0.0.0.0 account.jetbrains.com"添加到hosts文件中 hosts文件在C:\Windows ...
- Masterwoker模式
1 public class Task { 2 3 private int id; 4 private int price ; 5 public int getId() { 6 return id; ...