依赖
在 pom.xml中增加以下依赖
org.apache.poi
poi-ooxml
4.1.1
注:很多博客,教我们用以下依赖,是没有XSSF相关内容的
org.apache.poi
poi
3.14
version 版本
找到想要依赖的版本
点击进入后,可以直接复制里面的依赖
初始化
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();
获取所有的批注
Listcomments = slider.getComments();
获取所有的关联部分,包括:备注,批注,图片,图表,母版等
ListrelationParts = slider.getRelationParts();
获取备注,批注都是从 getRelationParts中获取的
除了图形的获取,其他元素的获取都可以通过此方法获取(通过遍历判断类型)
获取所有的图形
Listshapes = slider.getShapes();
POIXMLDocumentPart
POIXMLDocmentPart是一个ppt关联的部分的具体内容,包括:备注、批注、图片、图表、母版等。
通过 POIXMLDocumentPart documentPart = POIXMLDocumentPart.RelationPart.getDocumentPart() 获取。
批注部分, 与 slider.getComments() 对应
if (documentPart instanceofXSLFComments) {
XSLFComments comments1=(XSLFComments) documentPart;
}
图表部分,有多个,每个图表一个 XSLFChart
if (documentPart instanceofXSLFChart) {
XSLFChart chart=(XSLFChart) documentPart;
}
备注部分, 与 slider.getNotes() 相同
if (documentPart instanceofXSLFNotes) {
XSLFNotes notes1=(XSLFNotes) documentPart;
}
获取备注的一行文本
//文本段落,一行为一段
List> textParagraphs =notes1.getTextParagraphs();//第一行的所有文本,包含文本样式
ListtextRuns = textParagraphs.get(0).get(0).getTextRuns();//第一行的文本内容
String text = textParagraphs.get(0).get(0).getText();
母版,只有一个
if (documentPart instanceofXSLFSlideLayout) {
XSLFSlideLayout relation1=(XSLFSlideLayout) documentPart;
}
XSLFShape
获取 shape 的文本
for(XSLFShape shape : shapes) {if (shape instanceofXSLFTextShape) {//有文本的 sharpe
XSLFTextShape textShape =(XSLFTextShape) shape;//文本段落,一行为一段
ListtextParagraphs =textShape.getTextParagraphs();//第一行的所有文本,包含文本样式
ListtextRuns = textParagraphs.get(0).getTextRuns();//第一行的文本内容
String text = textParagraphs.get(0).getText();
}else if (shape instanceofXSLFGroupShape) {//图形组合
XSLFGroupShape groupShape =(XSLFGroupShape) shape;//图形组合下的图形,可以与 slider.getShapes() 获取的list一样操作
ListgroupShapeShapes =groupShape.getShapes();
}
}
文章来源: www.cnblogs.com,作者:Cheney.Zhong.ZCY,版权归原作者所有,如需转载,请联系作者。
原文链接:https://www.cnblogs.com/zhongchengyi/p/12151756.html