在 pom.xml中增長如下依賴apache
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.1</version> </dependency>
注:不少博客,教咱們用如下依賴,是沒有XSSF相關內容的ide
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency>
poi的版本能夠在 https://mvnrepository.com/artifact/org.apache.poi/poi 進行查詢。函數
找到想要依賴的版本字體
點擊進入後,能夠直接複製裏面的依賴spa
import org.apache.poi.sl.usermodel.SlideShow; import org.apache.poi.sl.usermodel.SlideShowFactory; SlideShow slideShow = SlideShowFactory.create(new File("./res/1.pptx"));
XSLFSlide未提供public的構造函數,獲取只能經過SlideShow中提供的createSlide, getSlides方法獲取。code
如圖:XSLFSlide的構造函數,都是私有的xml
如圖:SlideShow中提供的Slide獲取方法, 因爲 Slide 接口只有一個實現(XLSFSlide),因此能夠直接轉換成實現類(XLSFSlide)操做blog
獲取全部的備註接口
XSLFNotes notes = slider.getNotes();
獲取全部的批註圖片
List<XSLFComment> comments = slider.getComments();
List<POIXMLDocumentPart.RelationPart> relationParts = slider.getRelationParts();
List<XSLFShape> shapes = slider.getShapes();
POIXMLDocmentPart是一個ppt關聯的部分的具體內容,包括:備註、批註、圖片、圖表、母版等。
經過 POIXMLDocumentPart documentPart = POIXMLDocumentPart.RelationPart.getDocumentPart() 獲取。
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; }
獲取 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(); } }