依赖

在 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 接口的基本操作的更多相关文章

  1. java poi ppt操作示例

    poi3.9版本,官网 http://poi.apache.org/slideshow/how-to-shapes.html import java.awt.Color; import java.io ...

  2. java poi 操作ppt

    java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...

  3. JAVA POI的使用

    最近开发遇到了要通过Java处理Excel文件的场景,于是乎在网上了解了一番,最后自己做了个demo,已上传gitee:https://gitee.com/github-26930945/JavaCo ...

  4. java抽象类和接口区别

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  5. Java抽象类和接口的比较

    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...

  6. java POI创建Excel示例(xslx和xsl区别 )

    Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...

  7. java集合类型接口和实现类个人总结

    转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...

  8. 【Java基础】接口和抽象类之间的对比

    Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...

  9. java poi 操作

    Java POI 操作Excel(读取/写入) https://www.cnblogs.com/dzpykj/p/8417738.html Java操作Excel之Poi基本操作 https://my ...

随机推荐

  1. poj 1092 Farmland (Geometry)

    1092 -- Farmland 怎么最近做几何题都这么蛋疼,提交C++过不了交G++就过了.据我估计,原因是用了atan2这个函数,或者是其他一些函数造成了精度的影响.不管怎样,这题最后还是过了~ ...

  2. 第三期 行为规划——4.形式化FSM

    让我们考虑一个简单的自动售货机,其中一切花费20美分.假设这台自动售货机只需要镍和硬币,但没有更大或更小. 然后,我们可以模拟状态这台自动售货机以已存入的金额为准.起始状态将为零美分.有两种可能发生. ...

  3. @noi.ac - 170@ 数数

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 求有多少对 1 ∼ n 的排列 (a, b) 满足 \(m \l ...

  4. H3C 代理ARP

  5. oracle 基础表的选择

    基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的. 如果你使用的是CBO (COST BASED OPTI ...

  6. clone() 方法

    <html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...

  7. JS精度问题,解决方案 math.js

    JS精度问题    Vue中使用 解决方案 math.js npm install mathjs import { create, all } from 'mathjs' const config = ...

  8. 深入理解String、StringBuffer、StringBuilder(转)

    文章系转载,非原创,原地址: http://www.cnblogs.com/dolphin0520/p/3778589.html 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公 ...

  9. win10系统激活 快捷方式

    系统不定期就会提示激活,每次激活都是找各种工具折腾,今天捣鼓简单的脚本直接激活~~ 首先查看自己系统的版本,后面才能找到合适的激活码 win+R 启动程序 输入 winver 即可查看系统版本 2.查 ...

  10. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(16)之轻博客

    源码下载地址:http://www.yealuo.com/Sccnn/Detail?KeyValue=c891ffae-7441-4afb-9a75-c5fe000e3d1c 项目到上面一步其实已经算 ...