zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
  • 相关阅读:
    企业身份识别系统 corporate Identity System
    初试C#中的应用程序+SQLServer编写
    组策略对软件使用的限制
    Ajax初试
    Web技术应用率报告
    领导者必须抵御的诱惑
    asp与网站安全的初步构想(1)——操作系统安全
    XP 的Bug?
    C#的多线程(2)——机制探索
    网站设计
  • 原文地址:https://www.cnblogs.com/zhongchengyi/p/12151756.html
Copyright © 2011-2022 走看看