2017-05-25 12 views
0

PowerPointスライドには、VBAを介してアクセス可能で変更可能な内部名があります。 を参照してください。 Powerpoint: Manually set Slide Nameapache poiでpptxスライド名を取得する方法

私はapache poiから名前にアクセスしたいと思います。 私が試した:スライド名は、デフォルトの名前を持っている場合

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

だけが、このように空の文字列を取得します。

Apache POIのpptxファイルのスライド名を取得する(または設定する)適切な方法は何ですか?

答えて

3

スライドの名前はデフォルトでは未定義であるため、空の文字列が表示されます。リンクされた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(); 
} 
+0

私はVBAと同じようにデフォルト名が返されないというバグだと思います。デフォルトの名前は "Sld" +スライドのIDです。 –

+0

この機能は潜在的なusermodelメソッドには適用されますが、基礎となるxmlbeansには適用されません。私はこれをAPIに追加することができましたが、私はまだこのアプローチが理にかなっているとは確信していません。 bugzillaのエントリを開く場合は、ユースケースについても簡単に説明してください。 – kiwiwings

+0

私はJSF Jiraアカウントを持っていますが、nobzillaアカウントはありますか?何らかのシングルサインオンオプションがありますか?最良の選択肢は、すべてをgithubに移行する場合です。問題システムは他のシステムとの統合がはるかに優れています。 –

関連する問題