提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文演示通过SpringBoot项目,通过XSLF相关API处理pptx相关文件操作:
提示:以下是本篇文章正文内容,下面案例可供参考
一、XSLF是什么?
XSLF 是 Apache POI 的一部分,全称为 XML Slide Show Format,它是专门为处理 Microsoft PowerPoint 的 Office Open XML (.pptx) 格式文件而设计的 Java API。
XSLF 提供了丰富的 API 接口,通过 XSLF,直接在 Java 应用程序中创建、读取、修改和保存 PowerPoint (.pptx) 演示文稿文件。
二、使用步骤
1.导入apache poi相关依赖
pom代码如下:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
2.重要类及功能说明
XMLSlideShow :提供了创建、读取、修改 PowerPoint 文档内容的功能。
XSLFTextBox :文本框对象
XSLFTextParagraph :文本段落对象,它可以有自己的样式如居中等
XSLFTextRun :是包含单个连续文本片段的对象,它可以有自己的字体样式、颜色、大小等属性
3.创建一个ppt,添加一个文本框并填入内容
代码如下:
public void createdPpt() throws IOException {
XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide slide = ppt.createSlide(); //创建一个新的幻灯片
XSLFTextBox shape = slide.createTextBox(); //在幻灯片上新建一个文本框对象
XSLFTextParagraph paragraph = shape.addNewTextParagraph(); //在文本框中添加一个新的文本段落
XSLFTextRun titleTextRun = paragraph.addNewTextRun(); //在文本段落中添加文本,
titleTextRun.setText("这是文本内容"); // 设置文本文字
titleTextRun.setFontSize(48.0); // 设置字体大小(假设单位为磅)
titleTextRun.setFontColor(Color.BLACK); // 设置字体颜色
// 设置段落的一些样式
paragraph.setTextAlign(TextParagraph.TextAlign.CENTER); // 居中对齐
Rectangle2D.Double rect = new Rectangle2D.Double(100.0, 100.0, 400.0, 100.0); //设置图形(文本框)的位置及大小,以幻灯片的左上角为原点,参数1指x轴与原点在x方向上的距离,参数2指y轴距原点在y方向上的距离,参数3指宽度,参数4指高度。
shape.setAnchor(rect); //将图形的位置大小参数赋值给文本框
File outFile = new File("D:\\Desktop\\ppt结果演示11.pptx"); //新建文件
if (outFile != null) {
outFile.delete();
}
//导出结果
FileOutputStream out = new FileOutputStream(outFile);
ppt.write(out);
out.close();
System.out.println("文件生成成功!!!");
4.读取已有pptx文件,在表格模板中填充数据
ppt中第二页幻灯片的的表格模板:
代码如下:
public void fillingTable() throws IOException {
/*读取已有的的pptx文件*/
File file = new File("B:\\Desktop\\ppt模板.pptx");
FileInputStream fileInputStream = new FileInputStream(file);
XMLSlideShow ppt = new XMLSlideShow(fileInputStream);
List<XSLFSlide> slideList = ppt.getSlides