java poi ppt 接口的基本操作
依赖
在 pom.xml中增加以下依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
注:很多博客,教我们用以下依赖,是没有XSSF相关内容的
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
version 版本
poi的版本可以在 https://mvnrepository.com/artifact/org.apache.poi/poi 进行查询。
找到想要依赖的版本

点击进入后,可以直接复制里面的依赖

初始化
import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.sl.usermodel.SlideShowFactory; SlideShow slideShow = SlideShowFactory.create(new File("./res/1.pptx"));
- 如果文件不存在或文件正在使用,create 方法抛出 IOException 异常
- 如果文件损坏,create 方法抛出 EncryptedDocumentException 异常
- 返回值 SlideShow 代表整个ppt文档,可以通过 SlieShow.getSlides() 获取每张幻灯片进行操作,以及获取整个ppt的信息,如页面大小(getPageSize, setPageSize),图片数据(getPictureData, setPictureData),字体,输出到流等
- 通过SlideShow.getSlides()后操作Slide都可以反应到SlideShow。
Slide
- slide代表幻灯片的一页
- 也是代表open-xml中 /ppt/sliders/*.xml 中的一个xml文档
- Slide只有一个实现类 XSLFSlide
获取方法
XSLFSlide未提供public的构造函数,获取只能通过SlideShow中提供的createSlide, getSlides方法获取。
如图:XSLFSlide的构造函数,都是私有的

如图:SlideShow中提供的Slide获取方法, 由于 Slide 接口只有一个实现(XLSFSlide),所以可以直接转换成实现类(XLSFSlide)操作

常用操作
获取所有的备注
XSLFNotes notes = slider.getNotes();
获取所有的批注
List<XSLFComment> comments = slider.getComments();
- 获取所有的关联部分,包括:备注,批注,图片,图表,母版等
List<POIXMLDocumentPart.RelationPart> relationParts = slider.getRelationParts();
- 获取备注,批注都是从 getRelationParts中获取的
- 除了图形的获取,其他元素的获取都可以通过此方法获取(通过遍历判断类型)
- 获取所有的图形
List<XSLFShape> shapes = slider.getShapes();
POIXMLDocumentPart
POIXMLDocmentPart是一个ppt关联的部分的具体内容,包括:备注、批注、图片、图表、母版等。
通过 POIXMLDocumentPart documentPart = POIXMLDocumentPart.RelationPart.getDocumentPart() 获取。
- 批注部分, 与 slider.getComments() 对应
if (documentPart instanceof XSLFComments) {
XSLFComments comments1 = (XSLFComments) documentPart;
}
图表部分,有多个,每个图表一个 XSLFChart
if (documentPart instanceof XSLFChart) {
XSLFChart chart = (XSLFChart) documentPart;
}
备注部分, 与 slider.getNotes() 相同
if (documentPart instanceof XSLFNotes) {
XSLFNotes notes1 = (XSLFNotes) documentPart;
}
- 获取备注的一行文本
// 文本段落,一行为一段
List<List<XSLFTextParagraph>> textParagraphs = notes1.getTextParagraphs();
// 第一行的所有文本,包含文本样式
List<XSLFTextRun> textRuns = textParagraphs.get(0).get(0).getTextRuns();
// 第一行的文本内容
String text = textParagraphs.get(0).get(0).getText();
母版,只有一个
if (documentPart instanceof XSLFSlideLayout) {
XSLFSlideLayout relation1 = (XSLFSlideLayout) documentPart;
}
XSLFShape
获取 shape 的文本
for (XSLFShape shape : shapes) {
if (shape instanceof XSLFTextShape) {
// 有文本的 sharpe
XSLFTextShape textShape = (XSLFTextShape) shape;
// 文本段落,一行为一段
List<XSLFTextParagraph> textParagraphs = textShape.getTextParagraphs();
// 第一行的所有文本,包含文本样式
List<XSLFTextRun> textRuns = textParagraphs.get(0).getTextRuns();
// 第一行的文本内容
String text = textParagraphs.get(0).getText();
} else if (shape instanceof XSLFGroupShape) {
// 图形组合
XSLFGroupShape groupShape = (XSLFGroupShape) shape;
// 图形组合下的图形,可以与 slider.getShapes() 获取的list一样操作
List<XSLFShape> groupShapeShapes = groupShape.getShapes();
}
}
java poi ppt 接口的基本操作的更多相关文章
- java poi ppt操作示例
poi3.9版本,官网 http://poi.apache.org/slideshow/how-to-shapes.html import java.awt.Color; import java.io ...
- java poi 操作ppt
java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...
- JAVA POI的使用
最近开发遇到了要通过Java处理Excel文件的场景,于是乎在网上了解了一番,最后自己做了个demo,已上传gitee:https://gitee.com/github-26930945/JavaCo ...
- java抽象类和接口区别
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- Java抽象类和接口的比较
一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...
- java POI创建Excel示例(xslx和xsl区别 )
Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...
- java集合类型接口和实现类个人总结
转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...
- 【Java基础】接口和抽象类之间的对比
Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...
- java poi 操作
Java POI 操作Excel(读取/写入) https://www.cnblogs.com/dzpykj/p/8417738.html Java操作Excel之Poi基本操作 https://my ...
随机推荐
- IO NIO AIO及常用框架概述
概述 nio 同步: 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写). 异步: 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需 ...
- 什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
https://mp.weixin.qq.com/s/Co1LxS2h_ILh9syOmshjZg 什么是CGI CGI全称是“公共网关接口”(Common Gateway Interface),HT ...
- postman 中post方式提交数据
post方式提交数据时,把参数填写在body中而不是pOST下面的哪一行
- PHP内置服务器
PHP在安装的时候会内置了服务器的功能,我们在使用的过程中如果只是调试,可以选择启动PHP内置的服务器,下面是windows下PHP内置服务器的启动步骤: 1.将php的D:\phpStudy\php ...
- Python--day65--模板语言之filter
参考的原文链接:http://www.cnblogs.com/liwenzhou/p/7931828.html Filters(过滤器) 在Django的模板语言中,通过使用 过滤器 来改变变量的显示 ...
- java DOM 操作xml
1 代码如下: package dom.pasing; import java.io.IOException; import java.io.StringWriter; import javax.xm ...
- Codeforces3C. Tic-tac-toe 题解 状态压缩+搜索
作者:zifeiy 标签:状态压缩.搜索 题目链接:https://codeforces.com/contest/3/problem/C 题目大意: 有一个 \(3 \times 3\) 的棋盘,给你 ...
- Spring boot+JPA+Druid
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- Spring Data JPA坑点记录
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...
- linux 一个写缓存例子
我们已经几次提及 shortprint 驱动; 现在是时候真正看看. 这个模块为并口实现一个非 常简单, 面向输出的驱动; 它是足够的, 但是, 来使能文件打印. 如果你选择来测试这个 驱动, 但是, ...