1

javaでpptxファイルを読む方法を誰か助けてもらえますか?Apache POIでこれを読むことができればいいのですが、このチュートリアルを検索しましたが、見つかりません。このコードでpptファイルを正常に読みました:

try {
    FileInputStream fis = new FileInputStream(file);
    fs = new POIFSFileSystem(fis);
    HSLFSlideShow show = new HSLFSlideShow(fs);
    SlideShow ss = new SlideShow(show);
    Slide[] slides=ss.getSlides();
    for (int x = 0; x < slides.length; x++) {
        System.out.println("Slide = " + (x + 1) + " :" + slides[x].getTitle());

        TextRun[] runs = slides[x].getTextRuns();
        for (int i = 0; i < runs.length; i++) {
            TextRun run = runs[i];
            if (run.getRunType() == TextHeaderAtom.TITLE_TYPE) {
                System.out.println("Slide title " + (i + 1) + ": " + run.getText());
            } else {
                System.out.println("Slide text run " + (i + 1) + ": "  + run.getRunType() + " : " + run.getText());
            }
        }
    }
} catch (IOException ioe) {
    ioe.printStackTrace();
}

pptx ファイルを読み取るには、このコードのどの部分を変更する必要があるか教えてもらえますか?

4

3 に答える 3

3

http://poi.apache.org/slideshow/index.htmlによると、OOXML .pptxファイルを読み取るには、別のクラスのセットを使用する必要があります。クックブックにはサンプルコードがあります:http://poi.apache.org/slideshow/xslf-cookbook.html

于 2012-05-21T11:55:35.557 に答える
3

次のリンクは、ppt からデータを読み取るための完全なコードを提供します... http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/DataExtraction.ジャワ

簡単な要約を提供するために、手順に注意することができます: 最初に次を使用してスライド オブジェクトを作成します。

XMLSlideShow ppt = new XMLSlideShow(new FileInputStream("url of your ppt"));

次を使用して、ppt のサイドのリストを取得します。

final List<XSLFSlide> slide = ppt.getSlides();

スライドを反復処理し、次を使用して各スライドの図形のリストを取得します。

List<XSLFShape> shapes = selectedslide.getShapes(); 

形状のタイプを確認してください。XSLFTextShape または XSLFPictureShape のいずれかである必要があります。その後、それに応じてデータを処理および表示できます。

形状についてさらに読むためのリンクを次に示します。
https://poi.apache.org/apidocs/org/apache/poi/xslf/usermodel/XSLFShape.html

@Arne de Bruijn による応答 これがお役に立てば幸いです。

于 2015-12-12T01:39:37.730 に答える
0

apache poi のリリース ノートによると、バージョン 3.8 を使用して PPTX を読み取ることができます。ただし、ドキュメントを確認する必要があります。

于 2012-05-21T11:51:23.773 に答える