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 ...
随机推荐
- Best Open Source Software
Best Open Source Software Open Source, Software, Top The promise of open source software is best qua ...
- 在ORACLE存储过程中创建临时表
在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截 ...
- react项目安装及运行
博客地址 :https://www.cnblogs.com/sandraryan/ 安装node ,有就跳过. node.js官网:https://nodejs.org/en/ 终端用node -v ...
- linux下oracle查询中文乱码
export NLS_LANG=AMERICAN_AMERICA.UTF8
- 【tensorflow】】模型优化(一)指数衰减学习率
指数衰减学习率是先使用较大的学习率来快速得到一个较优的解,然后随着迭代的继续,逐步减小学习率,使得模型在训练后期更加稳定.在训练神经网络时,需要设置学习率(learning rate)控制参数的更新速 ...
- jq实现二级菜单/下拉菜单
https://www.cnblogs.com/sandraryan/ 不是很难,直接上代码~ 有写注释 <!DOCTYPE html> <html lang="en&qu ...
- Ant Design的Form组件中FormItem名称相同引起的问题
1.问题描述 在使用Antd组件Form表单的过程中,会出现FormItem同名的情况,此时要特别注意同名引起的表单行为异常问题,主要表现在以下方面: (1)同名表单项的值共享,并且其中一个的值改变, ...
- hibernate无限递归问题
项目异常如下: 2018-01-26 17:12:38.162 WARN 3128 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionReso ...
- Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence(思维)
传送门 题意: 给你一个只包含 '(' 和 ')' 的长度为 n 字符序列s: 给出一个操作:将第 i 个位置的字符反转('(' ')' 互换): 问有多少位置反转后,可以使得字符串 s 变为&quo ...
- Ralasafe配置手册
Ralasafe访问控制(权限管理)中间件的配置工作非常少.因为项目发起人非常讨厌配置.因此,"己所不欲,勿施于人",Ralasafe的配置也非常少. Ralasafe配置工作只有 ...