poi 操作 PPT,针对 PPTX--图表篇

2023-11-13

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
(目前只支持更新饼图,折线图,柱状图,雷达图,使用方法后续继续更新),有问题请联系我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

poi 操作 PPT,针对 PPTX--图表篇 的相关文章

  • 在 mvn 命令中指定 pom.xml 并混合其他项目的目标

    我有多个问题 我可以在 mvn 命令中指定 pom xml 吗 在当前项目上执行 mvn 命令时 我可以混合另一个项目的目标吗 例如 mvn clean otherproject comple otherproject install ot
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • “java.net.MalformedURLException:未找到协议”读取到 html 文件

    我收到一个错误 java net MalformedURLException Protocol not found 我想读取网络上的 HTML 文件 mainfest uses permission android name android
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 如何根据运行的 jar 的结果让我的 ant 任务通过或失败?

    我正在运行 CrossCheck 无浏览器 js 单元测试 作为 ant 脚本的一部分 如果 CrossCheck 测试失败 我希望 ant 报告失败 这是 build xml 中的相关部分
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • Java EE 目录结构

    我对以下教程有疑问 http www mkyong com jsf2 jsf 2 internationalization example http www mkyong com jsf2 jsf 2 internationalizatio

随机推荐

  • Qtcreator中来调用python的函数的用法

    以下内容是参考博客 https blog csdn net alxe made article details 83382159 由以上大神的博客作为参考成功实现的 一 先说几点注意的地方 1 就是需要将python的路径在pro中加载进来
  • 和利时系统如何下装服务器,和利时服务器如何将A设置B

    和利时服务器如何将A设置B 内容精选 换一换 系统盘镜像和数据盘镜像为128个 整机镜像为10个 没有限制 可以 支持中国站和国际站的帐号之间共享镜像 但是仅限于中国站和国际站共同拥有的区域 例如 您在中国站的 华北 北京四 的镜像不能共享
  • ShardingSphere报错-java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

    目录 一 场景 二 报错信息 三 排查 四 原因 五 解决 一 场景 1 项目使用ShardingJDBC操作数据库 2 查询SQL执行报错 但将sql复制到navicat中执行 是正常的 二 报错信息 nested exception i
  • 2021-06-15

    com aspose diagram afr Unexcepted eof 有没有大佬遇到过这个问题 救命
  • 华为OD机试 Java 几何平均值最大子数组

    题目 代码 import java util public class MaxGeometricMean public static void main String ar
  • Vue 响应式实现原理

    准备工作 数据驱动 响应式的核心原理 发布订阅模式和观察者模式 数据驱动 数据响应式 双向绑定 数据驱动 数据响应式 数据模型仅仅是普通的 JS 对象 而当我们修改数据时 试图回进行更新 避免了繁琐的 DOM 操作 提高开发效率 双向绑定
  • 类是公共的 应该在 java中声明_Java入门-类HelloWorld是公共的,应在名为HelloWorld.java的文件中声明...

    开始学习java了 搭好环境 notepad 中新建一个java文件 新建一个HelloWorld类 public class HelloWorld public static void main String args System ou
  • Verilog自动生成 CRC 校验代码

    CRC 循环冗余码 表示形式 多项式G x G x X4 X3 1 假设 输入数据 Data 选定的多项式G x 是x4 x3 1 所以G M 11001 CRC Data mod G 注 CRC的位数要始终比G少1位 因为余数肯定比除数小
  • JAVA中使用FTPClient上传下载

    JAVA中使用FTPClient上传下载 在JAVA程序中 经常需要和FTP打交道 比如向FTP服务器上传文件 下载文件 本文简单介绍如何利用jakarta commons中的FTPClient 在commons net包中 实现上传下载文
  • 2023华为OD机试真题Java实现【深度优先搜索/机器人】

    题目描述 现有一个机器人 可放置于M N的网格中任意位置 每个网格包含一个非负整数编号 当相邻网格的数字编号差值的绝对值小于等于1时 机器人可以在网格间移动 问题 求机器人可活动的最大范围对应的网格点数目 说明 网格左上角坐标为 0 0 右
  • 全网最全的私网多种穿透互联技术解析

    多种业务场景存在私网的情况下需要对网络的互联互通 视情况使用以下多种网络工具进行互联 以下使用的工具都是跨平台的 适用大多数操作系统 Openvpn 前言 操作系统 Centos6 Centos7 Centos8 openvpn的虚拟网卡是
  • 动态规划——购物单

    HJ16 购物单 这是一道典型的0 1背包问题 一开始的反应就是外层循环正向遍历物品 内层循环反向遍历背包容量 但由于物品增加了附件这一属性 使得这道题难度增加了不少 可以参考该视频处理物品的思路 每个物品用长度为6的数组来分别保存索引为i
  • CNN

    卷积神经网络 Convolutional Neural Networks 是一种深度学习模型或类似于人工神经网络的多层感知器 常用来分析视觉图像 CNN在图像分类数据集上有非常突出的表现 DNN与CNN 下图为DNN 下图为CNN 虽然两张
  • 低压差线性稳压电源(LDO)原理、参数及应用

    文章目录 前言 一 低压差线性稳压电源是什么 二 LDO工作原理 1 NPN稳压器 2 LDO稳压器 3 准LDO稳压器 4 场效应管 FET 作为导通管LDO 三 LDO的参数 1 裕量电压 2 静态电流和接地电流 3 效率 4 PSRR
  • 错误:‘uuid_t’在此作用域中尚未声明

    安装TFS报错 1 2 3 4 5 6 7 8 9
  • MYSQL 中 LIMIT 用法

    mapper文件中的sql 在实体类中定义的属性 start 从第几条记录开始 size 读取几条记录 select id findAllUsers parameterType Map resultType entity IUser gt
  • 华为OD机试 - 座位调整(JS)

    题目描述 疫情期间课堂的座位进行了特殊的调整 不能出现两个同学紧挨着 必须隔至少一个空位 给你一个整数数组 desk 表示当前座位的占座情况 由若干 0 和 1 组成 其中 0 表示没有占位 1 表示占位 在不改变原有座位秩序情况下 还能安
  • java--注解和反射

    一 注解 1 1 注解Annotation的概念 1 注解的作用 注解Annotation是从JDK1 5开始引入的新技术 我们在编程中经常会使用到注解 它的作用有 1 编译检查 比如 SuppressWarnings Deprecated
  • 【使用html2pdf将页面生成PDF文件】

    前端使用html2pdf将页面生成PDF文件 一 下载js文件 链接 https cdnjs cloudflare com ajax libs html2pdf js 0 10 1 html2pdf bundle min js 二 引入js
  • poi 操作 PPT,针对 PPTX--图表篇

    poi 操作 PPT 针对 PPTX 图表篇 文章目录 poi 操作 PPT 针对 PPTX 图表篇 1 读取 PPT 模板 2 替换标题 4 替换图表数据 接下来对 ppt 内的图表进行操作 替换图表的数据 原幻灯片样式 1 读取 PPT