Beim Versuch, MS Excel-Datei mit POI-HSSF v3.2 zu analysieren, erhalte ich IndexOutOfBoundsException. Die Tabelle, die ich zu lesen versuche, ist nicht leer, sie wurde mit MS Excel 2003 erstellt, und BiffViewer, das im POI-Paket enthalten ist, hat kein Problem beim Parsen.IndexOutOfBoundsException beim Versuch, MS Excel-Datei mit Apache POI-HSSF zu lesen
Mein Code ist wie folgt:
package src;
import java.io.*;
import org.apache.poi.hssf.record.*;
import org.apache.poi.hssf.eventusermodel.*;
class Excel implements HSSFListener
{
public static void main (String[] args) throws Exception
{
FileInputStream stream = new FileInputStream("c:\\temp\\a.xls");
HSSFEventFactory f = new HSSFEventFactory();
HSSFRequest req = new HSSFRequest();
req.addListenerForAllRecords(new Excel());
f.processEvents(req,stream);
stream.close();
}
public void processRecord (Record r)
{
System.out.println(r);
}
}
Und hier ist der Stack-Trace Ich erhalte:
Exception in thread "main" java.lang.IndexOutOfBoundsException bei java.io. FileInputStream.readBytes (native Methode) bei java.io.FileInputStream.read (FileInputStream.java:199) bei org.apache.poi.hssf.record.RecordInputStream.nextRecord (RecordInputStream.java:106) bei org.apache .poi .hssf.eventusermodel.HSSFRecordStream.getNextRecord (HSSFRecordStream.java:128) bei org.apache.poi.hssf.eventusermodel.HSSFRecordStream.nextRecord (HSSFRecordStream.java:93) bei org.apache.poi.hssf.eventusermodel.HSSFEventFactory .genericProcessEvents (HSSFEventFactory.java:141) bei org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processEvents (HSSFEventFactory.java:98) bei src.Excel.main (Excel.java:21)
Vielen Dank! Ich weiß, ich bin einfach faul und hätte mir die POI-Quelle selbst ansehen können, aber hoffentlich wird jemand hier in der Lage sein, schnell auf jede dumme Sache hinzuweisen, die ich in meinem Code getan habe.