poi 操作 PPT,针对 PPTX--文字操作

poi 操作 PPT,针对 PPTX--文字操作

接下来对 ppt 内幻灯片的段落文字进行操作

1、获取幻灯片内的所有段落文字

幻灯片如下:


@Test
public void testDemo5() {
    String filePath = "C:\\Users\\HONOR\\Downloads\\1-201216124221\\公司简介.pptx";
    PPTUtil pptUtil = new PPTUtil(filePath);    // 读取 ppt 模板
    // 获取该幻灯片内的所有段落
    List<XSLFTextParagraph> paragraphs = pptUtil.getParagraphsFromSlide(pptUtil.getSlides().get(3));    
    for (XSLFTextParagraph paragraph : paragraphs) {
        if (!"".equals(paragraph.getText())) {  // 如果该段落文本不为空,则打印文本
            System.out.println(paragraph.getText());
        }
    }
}

点击输入您的标题
LOGO
关键词
点击添加文本 点击添加文本
点击添加文本 点击添加文本
点击添加文本 点击添加文本
点击添加文本 点击添加文本
添加标题
添加标题

2、对幻灯片内的文本内容进行模板替换

针对幻灯片内段落文本中出现标签 {**} 的内容进行替换,如下所示:

原幻灯片

替换后幻灯片

Java 代码


@Test
public void testDemo6() {
    // ppt 模板地址
    String filePath = "C:\\Users\\HONOR\\Downloads\\1-201216124221\\公司简介.pptx";

    // 构造数据
    Map<String, Object> keyMap = new HashMap<String, Object>();
    keyMap.put("aa", "Java 的发展历史");
    keyMap.put("bb", "为什么要开发 Java");
    keyMap.put("dd", "Java 的优势与劣势");

    PPTUtil pptUtil = new PPTUtil(filePath);    // 读取 ppt 模板
    List<XSLFTextParagraph> paragraphs = pptUtil.getParagraphsFromSlide(pptUtil.getSlides().get(9));    // 获取该幻灯片内所有段落
    for (XSLFTextParagraph paragraph : paragraphs) {
        pptUtil.replaceTagInParagraph(paragraph, keyMap);   // 对该段落中所有标签 {**} 进行替换
    }
    pptUtil.writePPT("C:\\Users\\HONOR\\Downloads\\1-201216124221\\公司简介1.pptx");
}

3、对段落新增文本

选定一个段落(XSLFTextParagraph),在其末尾添加新的文本或者重新设置文本

原幻灯片


 /**
* 追加新的文本
*/
@Test
public void testDemo8() {
    String filePath = "C:\\Users\\HONOR\\Desktop\\xsmb.pptx";
    String exportPath = "C:\\Users\\HONOR\\Desktop\\1.pptx";
    PPTUtil pptUtil = new PPTUtil(filePath);
    List<XSLFTextParagraph> paragraphs = pptUtil.getParagraphsFromSlide(pptUtil.getSlides().get(3));
    pptUtil.addParagraphText(paragraphs.get(paragraphs.size() - 1), true, "新的文本");  // 在最后一个段落后面添加新的文本
    pptUtil.writePPT(exportPath);
}

追加文本后的幻灯片


/**
* 追加新的文本
*/
@Test
public void testDemo8() {
    String filePath = "C:\\Users\\HONOR\\Desktop\\xsmb.pptx";
    String exportPath = "C:\\Users\\HONOR\\Desktop\\1.pptx";
    PPTUtil pptUtil = new PPTUtil(filePath);
    List<XSLFTextParagraph> paragraphs = pptUtil.getParagraphsFromSlide(pptUtil.getSlides().get(3));
    pptUtil.addParagraphText(paragraphs.get(paragraphs.size() - 1), false, "新的文本");  // 在最后一个段落后面添加新的文本
    pptUtil.writePPT(exportPath);
}

重新设置段落文本后的幻灯片

当然,在设置文本的时候,你还可以设置相应的文本的属性,例如字体,字体大小,字体颜色,字体粗细等等

设置样式后的幻灯片


/**
* 追加新的文本
*/
@Test
public void testDemo8() {
    String filePath = "C:\\Users\\HONOR\\Desktop\\xsmb.pptx";
    String exportPath = "C:\\Users\\HONOR\\Desktop\\1.pptx";
    PPTUtil pptUtil = new PPTUtil(filePath);
    List<XSLFTextParagraph> paragraphs = pptUtil.getParagraphsFromSlide(pptUtil.getSlides().get(3));

    ParagraphTextStyle pts = new ParagraphTextStyle();
    pts.setColorHex("#ff0000");
    pts.setFontFamily("微软雅黑");


    pptUtil.addParagraphText(paragraphs.get(paragraphs.size() - 1), false, "新的文本", pts);  // 在最后一个段落后面添加新的文本,并利用文本样式对象来设置文本的属性

    pptUtil.addParagraphText(paragraphs.get(paragraphs.size() - 1), true, "字体加粗", true);    // 添加文本,并设置加粗文本

    // 或者先添加文本,再对返回的文本对象进行属性的设置
    XSLFTextRun textRun = pptUtil.addParagraphText(paragraphs.get(paragraphs.size() - 1), true, "下划线文本");
    pptUtil.setTextUnderline(textRun, true);

    pptUtil.writePPT(exportPath);
}

注: 本博客代码只为学习交流分享

PPTUtil 工具地址:https://gitee.com/livekeys/officetool.git
(PPTUtil 持续更新),代码有问题的地方一起交流。

posted @ 2021-04-21 22:34  livekeys  阅读(793)  评论(1编辑  收藏  举报