You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Apache POI重命名PowerPoint幻灯片母版

用Apache POI重命名PowerPoint幻灯片母版的实现方案

刚好做过类似需求,我来给你捋清楚怎么用Apache POI实现和GUI操作对应的母版重命名功能~

首先对应你提到的GUI操作:点击视图→幻灯片母版→右键最上方母版重命名,在Apache POI里对应的核心操作就是找到主幻灯片母版对象,然后设置它的名称属性就行,具体步骤和代码如下:

核心实现步骤

  • 加载目标PPT文件(支持.pptx.ppt两种格式,API略有差异)
  • 获取幻灯片母版集合,第一个母版就是GUI里左侧最上方的主母版
  • 调用母版对象的setName()方法设置新名称
  • 保存修改后的PPT文件

.pptx格式的代码示例

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class RenamePptxMaster {
    public static void main(String[] args) {
        String inputPptPath = "你的输入文件.pptx";
        String outputPptPath = "修改后的输出文件.pptx";
        String newMasterName = "我的自定义母版"; // 你要设置的新名称

        try (XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(inputPptPath));
             FileOutputStream outputStream = new FileOutputStream(outputPptPath)) {

            // 获取主幻灯片母版(对应GUI里最顶部的那个)
            XSLFSlideMaster mainSlideMaster = ppt.getSlideMasters().get(0);
            
            // 执行重命名操作,和GUI里的右键重命名效果完全一致
            mainSlideMaster.setName(newMasterName);
            
            // 保存修改
            ppt.write(outputStream);
            System.out.println("母版重命名完成,新名称:" + newMasterName);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

兼容旧版.ppt格式的代码示例

如果你的文件是旧版的.ppt格式(二进制格式),需要用HSLF相关的API,代码逻辑类似:

import org.apache.poi.hslf.usermodel.HSLFSlideShow;
import org.apache.poi.hslf.usermodel.HSLFSlideMaster;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class RenamePptMaster {
    public static void main(String[] args) {
        String inputPptPath = "你的输入文件.ppt";
        String outputPptPath = "修改后的输出文件.ppt";
        String newMasterName = "我的自定义母版";

        try (HSLFSlideShow ppt = new HSLFSlideShow(new FileInputStream(inputPptPath));
             FileOutputStream outputStream = new FileOutputStream(outputPptPath)) {

            HSLFSlideMaster mainSlideMaster = ppt.getSlideMasters().get(0);
            mainSlideMaster.setName(newMasterName);
            
            ppt.write(outputStream);
            System.out.println("旧版PPT母版重命名完成");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

关键点说明

  • ppt.getSlideMasters().get(0):PPT里的主母版永远是集合里的第一个元素,和GUI里左侧最顶部的那个对应;如果有多个自定义母版,可以通过索引或者遍历的方式找到目标母版
  • setName()方法:这个方法直接修改母版的名称属性,保存后打开PPT,进入幻灯片母视图就能看到新名称,和手动操作的效果完全一致

内容的提问来源于stack exchange,提问作者javaer

火山引擎 最新活动