Apache POIでWord(ole2フォーマットのものが対象)の情報を読み取りたいと考えております。
そこで、試しに以下のようなソースを書いて実行しようとしたのですが、java.lang.ArrayIndexOutOfBoundsExceptionが出て、HWPFDocumentオブジェクトが初期化できません。。。
どなたか、詳しい方、回避方法をご教授いただけないでしょうか?
■ソース
java
1 1 import org.apache.poi.hwpf.HWPFDocument; 2 2 import org.apache.poi.hwpf.usermodel.Range; 3 3 import java.io.File; 4 4 import java.io.FileInputStream; 5 5 import java.util.List; 6 6 import java.io.IOException; 7 7 import java.io.FileNotFoundException; 8 8 9 9 public class WordReader { 10 10 11 11 public static void main(String[] args) { 12 12 13 13 // 読み取り対象のファイル名 14 14 String resource = args[0]; 15 15 16 16 System.out.println("次のファイルを読み取ります。"+resource); 17 17 try { 18 18 // HWPFDocumentオブジェクトを初期化 19 19 File resourceFile = new File(resource); 20 20 HWPFDocument doc = new HWPFDocument(new FileInputStream(resource)); 21 21 22 22 // Rangeを取得。 23 23 Range r = doc.getRange(); 24 24 25 25 // ひとまず、セクションの数を出してみる。 26 26 System.out.println(r.numSections()); 27 27 28 28 }catch(FileNotFoundException e){ 29 29 30 30 System.out.println("FileNotFoundExceptionがでたよ!"); 31 31 System.out.println(e); 32 32 }catch(IOException e){ 33 33 34 34 System.out.println("IOExceptionが出たよ"); 35 35 System.out.println(e); 36 36 } 37 37 38 38 } 39 39 }
■実行結果
XXXX$ java -cp ./lib/poi-3.15.jar:./lib/poi-scratchpad-3.15.jar:./ WordReader ./resource/test.doc
次のファイルを読み取ります。./resource/test.doc
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 55207
at org.apache.poi.util.LittleEndian.getShort(LittleEndian.java:225)
at org.apache.poi.hwpf.model.Xst.<init>(Xst.java:64)
at org.apache.poi.hwpf.model.ListLevel.read(ListLevel.java:227)
at org.apache.poi.hwpf.model.ListLevel.<init>(ListLevel.java:71)
at org.apache.poi.hwpf.model.ListFormatOverrideLevel.<init>(ListFormatOverrideLevel.java:41)
at org.apache.poi.hwpf.model.LFOData.<init>(LFOData.java:57)
at org.apache.poi.hwpf.model.PlfLfo.<init>(PlfLfo.java:100)
at org.apache.poi.hwpf.model.ListTables.<init>(ListTables.java:80)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:296)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:157)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:145)
at WordReader.main(WordReader.java:20)
XXXX$
■使用ライブラリ
poi-3.15.jar
poi-scratchpad-3.15.jar
■フォルダ構成
.
├── WordReader.class
├── WordReader.java
├── lib
│ ├── poi-3.15.jar
│ ├── poi-scratchpad-3.15.jar
└── resource
└── test.doc
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。