簡體   English   中英

如何使用Apache POI檢索PPTX幻燈片名稱

[英]How to retrieve pptx slide name with apache poi

Powerpoint幻燈片具有可通過VBA訪問和修改的內部名稱。 參見例如Powerpoint:手動設置幻燈片名稱

我想通過apache poi訪問該名稱。 我試過了:

 public String getName() {
    CTSlide ctSlide = slide.getXmlObject();
    String name=ctSlide.getCSld().getName();
    return name;
  }

但如果幻燈片名稱僅具有默認名稱,則只能以這種方式獲取空字符串。

在Apache POI中獲取(甚至設置)pptx文件的幻燈片名稱的正確方法是什么?

幻燈片名稱默認情況下是未定義的,因此您會收到一個空字符串。 如果您使用鏈接的VBA示例,然后嘗試上面的代碼,則將獲得幻燈片名稱。 相應的二傳手也可以...

由於幻燈片名稱只能通過VBA進行修改-我會改用幻燈片標題,但是當然要取決於您的用例。

public static void main(String[] args) throws Exception {
    // slide name has been set via VBA ...
    FileInputStream fis = new FileInputStream("slidename.pptx");
    XMLSlideShow ppt = new XMLSlideShow(fis);
    fis.close();
    XSLFSlide sl = ppt.getSlides().get(0);
    System.out.println(sl.getXmlObject().getCSld().getName());
    // set slide name via POI and validate it
    sl.getXmlObject().getCSld().setName("new name");
    FileOutputStream fos = new FileOutputStream("slidename2.pptx");
    ppt.write(fos);
    fos.close();
    ppt.close();
    fis = new FileInputStream("slidename2.pptx");
    ppt = new XMLSlideShow(fis);
    fis.close();
    System.out.println(sl.getXmlObject().getCSld().getName());
    ppt.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM