パワポは、便利なお絵かきツールですw
Apache POIを使って、PowerPointのファイルを読み込むサンプル
Apache POIを使って、PowerPointのファイルを読み込みます。
また、シェイプ(図形)の種類と、シェイプの中に書いてある文字列を出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.sl.usermodel.ShapeType; import org.apache.poi.xslf.usermodel.XMLSlideShow; import org.apache.poi.xslf.usermodel.XSLFShape; import org.apache.poi.xslf.usermodel.XSLFSlide; import org.apache.poi.xslf.usermodel.XSLFTextShape; public class PowerPointReadTest { public static void main(String[] args) { try (FileInputStream fileInputStream = new FileInputStream("c:\\work\\test.pptx"); XMLSlideShow ppt = new XMLSlideShow(fileInputStream)) { //スライドの数だけ回す for (XSLFSlide slide : ppt.getSlides()) { //スライド内のシェイプを拾う for (XSLFShape shape : slide.getShapes()) { //テキストを扱えるシェイプの判定 if (shape instanceof XSLFTextShape) { //シェイプの型を取得 XSLFTextShape textShape = (XSLFTextShape)shape; ShapeType shapeType = textShape.getShapeType(); //シェイプの型と中のテキストを出力 System.out.println("シェイプの型:" + shapeType); System.out.println("シェイプの文字列:" + textShape.getText()); } } } } catch (IOException e) { e.printStackTrace(); } } } |
実行結果
パワーポイントのファイルにあるシェイプ(図形)の種類と、シェイプの中に書いてある文字列が出力されます。
ついでに、log4j-coreの設定に関するエラーが表示されます。
1 2 3 4 5 6 7 8 | ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console... シェイプの型:ELLIPSE シェイプの文字列:まる シェイプの型:TRIANGLE シェイプの文字列:さんかく シェイプの型:RECT シェイプの文字列:しかく シェイプの型:ELLIPSE |
エラーが気になるようでしたら、log4jを設定しましょう。
ちなみに、読み込んだパワーポイントのファイルは、こんな感じのものです。
サンプルの解説
XMLSlideShow#getSlides()でスライドのリストを取得。
XSLFSlide#getShapes()でスライド内のシェイプ(図形)を取得できます。
あとは、XSLFTextShape#getText()のような感じで、文字列などを取得することができます。
また、今回のサンプルでは、全スライドにある全シェイプ(テキストを扱える)を対象にしていますので、2枚目以降のスライドの分も含めて取得されます。
ただし、グループ化されているものは今回のサンプルでは取得できません。
余談ですが、実はこれをパワーポイントのマクロ(VBA)で書くと、ほぼそっくりなコードが出来上がりますw
まあ、やることが同じなら似ているのは当然なんですが。。
Excelのときはそんなに思わないんだけど、パワポはよく似てると思うんだよねー。
※このコードを使用するには、別途Apache POIの入手が必要です。
入手方法などはこちらの記事に書いてあります。