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 ...
随机推荐
- vue-router2.0的用法
随着vue越来越火,而vue-router却是一个项目不可或缺的,所以在这里结合实例总结一下router的用法,也是给自己的一个总结. 1.首先第一步当然是安装vue-router依赖,当然也可直接s ...
- 微信授权登录-微信公众号和PC端网站
https://blog.csdn.net/qq_34664239/article/details/79107529 一.微信公众号授权登录——微信公众平台 微信授权登录,并调用后台接口,获取用户信息 ...
- ElementUI分页Pagination自动到第一页
当数据量过多时,使用分页请求数据. 设置分页的页数自动回到第一页. 例: <div class="pagination"> <el-pagination back ...
- JavaScript 鼠标事件
鼠标事件是Web开发中最常用的一类事件. DOM3级事件中定义了9个鼠标事件,分别如下: click.dbclick.mousedown.mouseenter.mouseleave.mousemove ...
- 微信小程序弹框wx.showModal如何修改样式
由于官方API提供的显示模态弹窗,只能简单地显示文字内容,不能对对话框内容进行自定义,欠缺灵活性,所以自己从模态弹窗的原理角度来实现了自定义的模态对话框. wx.showModal修改样式后的效果,如 ...
- HTML--简单的注册网页
利用表格,渐变色 <body background="未标题-2.jpg"> <table align="center" border=&qu ...
- 第25章 Pytorch 如何高效使用GPU
第25章 Pytorch 如何高效使用GPU 深度学习涉及很多向量或多矩阵运算,如矩阵相乘.矩阵相加.矩阵-向量乘法等.深层模型的算法,如BP,Auto-Encoder,CNN等,都可以写成矩阵运算的 ...
- java三大循环结构
用于处理需要重复执行的操作: 根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体: while:事先不需要知道循环执行多少次: do while:同上,只是至少要执行一次( ...
- PHP两个变量值互换(不用第三变量)
<?php /** * 双方变量为数字或者字符串时 * 使用list()和array()方法可以达到交换变量值得目的 */ $a = "This is A"; // a ...
- [转]在Windows中安装Memcached
Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度. Memcached最开始是作为 ...