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--图表篇的更多相关文章

  1. java poi 操作ppt

    java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...

  2. Java 利用POI操作PPT

    解析PPT文件中的图片 import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hslf.HSLFSli ...

  3. 使用POI操作PPT文档(插入文本、图片)转

    1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片如下代码创建空的PPT文档: SlideShow ppt ...

  4. 全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)

    POI 与 Microsoft Office 1. POI 简介 POI 是 Apache 下的 Jakata 项目的一个子项目,主要用于提供 java 操作 Microsoft Office 办公套 ...

  5. C++通过COM接口操作PPT

    一. 背景 在VS环境下,开发C++代码操作PPT,支持对PPT模板的修改.包括修改文本标签.图表.表格.满足大多数软件生成PPT报告的要求,先手工创建好PPT模板,在程序中修改模板数据. 二. 开发 ...

  6. Jacob操作ppt

    前几天使用Apache 的POI操作ppt,后来发现转成的图片出现乱码,而且处理了之后,还会有遗留 因此决定换一种处理方式 Jacob 是 JAVA-COM Bridge的缩写,是一个中间件,能够提供 ...

  7. Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包

    可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...

  8. poi操作excel的基本用法

    这周公司要用excel作为数据存储格式做一个文具申请的功能,感觉以前本来很简单的功能变复杂了不少,但是还是记录一下一些excel的基本用法. 写在最前面:这里只介绍一些excel的基本存储方式(读,写 ...

  9. JAVA通过COM接口操作PPT

    一. 背景说明 在Eclipse环境下,开发JAVA代码操作PPT,支持对PPT模板的修改.包括修改文本标签.图表.表格.满足大多数软件生成PPT报告的要求,即先收工创建好模板,在程序中修改模板数据. ...

随机推荐

  1. 一条sql语句的执行过程

    一条select语句执行流程 第一步:连接器 连接器负责跟客户端建立连接.获取权限.维持和管理连接.如果用户名密码验证通过后,连接器会到权限表里面查出你拥有的权限.之后该连接的权限验证都依赖于刚查出来 ...

  2. 鸿蒙的js开发部模式16:鸿蒙布局Grid网格布局的应用一

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口]目录:1.Grid简介2.使用Grid布局实现的效果3.grid-row-gap和grid-colunm-gap属性4.< ...

  3. 【经验】Rufus制作Win10启动盘支持UEFI:比使用UltraISO(软碟通)制作Win10操作系统U盘启动盘更快捷的工具完整教程-

    ultraiso中文称之为软碟通,是一款功能强大的光盘映像文件制作/编辑/转换工具,通过它,用户可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文件制作 ...

  4. javascript中的模块系统

    目录 简介 CommonJS和Nodejs AMD异步模块加载 CMD ES modules和现代浏览器 在HTML中使用module和要注意的问题 简介 在很久以前,js只是简单的作为浏览器的交互操 ...

  5. Python 元类编程实现一个简单的 ORM

    概述 什么是ORM? ORM全称"Object Relational Mapping",即对象-关系映射,就是把关系数据库的一行映射为一个对象,也就是一个类对应一个表,这样,写代码 ...

  6. VSCode添加用户代码片段,自定义用户代码片段

    在使用VScode开发中经常会有一些重复使用的代码块,复制粘贴也很麻烦,这时可以在VScode中添加用户代码片段,输入简写即可快捷输入. VScode中添加用户自定义代码片段很简单. 1.在VScod ...

  7. 【Azure 应用服务】Azure App Service 自带 FTP服务

    问题描述 Azure PaaS服务是否有FTP/S服务呢? 回答问题 应用服务(Web App/App Service)在创建时候,默认创建了FTP服务并自动开启,用于应用部署.但它不是适合作为FTP ...

  8. 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)

    完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...

  9. IDEA的注册方式

    http://idea.lanyus.com/ 使用前请将"0.0.0.0 account.jetbrains.com"添加到hosts文件中 hosts文件在C:\Windows ...

  10. Masterwoker模式

    1 public class Task { 2 3 private int id; 4 private int price ; 5 public int getId() { 6 return id; ...