poi 操作 PPT,针对 PPTX–文字操作
文章目录
- poi 操作 PPT,针对 PPTX--文字操作
- 1、获取幻灯片内的所有段落文字
- 2、对幻灯片内的文本内容进行模板替换
- 3、对段落新增文本
接下来对 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 持续更新),代码有问题的地方一起交流。