2011年12月17日土曜日

Apache POI:Not enough data (1) to read requested (2) bytes

Apache POIライブラリ(3.7)でxlsファイルを読み込んだら次のようなエラーが表示された.
 Exception in thread "main" org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance
  at org.apache.poi.hssf.record.RecordFactory$ReflectionConstructorRecordCreator.create(RecordFactory.java:65)
  at org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:300)
  at org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:270)
  at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:236)
  at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:442)
  at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:263)
  at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:188)
  at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:305)
  at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:286)
  at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:60)
  at org.sheepcloud.lab.Parser.<init>(Parser.java:26)
  at org.sheepcloud.lab.Parser.main(Parser.java:53)
 Caused by: org.apache.poi.hssf.record.RecordFormatException: Not enough data (1) to read requested (2) bytes
  at org.apache.poi.hssf.record.RecordInputStream.checkRecordPosition(RecordInputStream.java:216)
  at org.apache.poi.hssf.record.RecordInputStream.readUShort(RecordInputStream.java:267)
  at org.apache.poi.hssf.record.common.UnicodeString$PhRun.<init>(UnicodeString.java:311)
  at org.apache.poi.hssf.record.common.UnicodeString$PhRun.<init>(UnicodeString.java:297)
  at org.apache.poi.hssf.record.common.UnicodeString$ExtRst.<init>(UnicodeString.java:178)
  at org.apache.poi.hssf.record.common.UnicodeString.<init>(UnicodeString.java:438)
  at org.apache.poi.hssf.record.SSTDeserializer.manufactureStrings(SSTDeserializer.java:55)
  at org.apache.poi.hssf.record.SSTRecord.<init>(SSTRecord.java:250)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
  at org.apache.poi.hssf.record.RecordFactory$ReflectionConstructorRecordCreator.create(RecordFactory.java:57)
  ... 11 more
原因がわからずなんともならなかったのでベータ版(3.8beta4)に切り替えたら,あっさりと動いた.

気持ち悪いが,とりあえず動いたからよしとしよう.

0 件のコメント:

コメントを投稿