Lors de la tentative d'analyse du fichier MS Excel à l'aide de POI-HSSF v3.2, j'obtiens IndexOutOfBoundsException. La feuille de calcul que j'essaie de lire n'est pas vide, elle a été créée en utilisant MS Excel 2003 et BiffViewer inclus avec le paquet POI n'a aucun problème pour l'analyser.IndexOutOfBoundsException lors de la tentative de lecture du fichier MS Excel à l'aide d'Apache POI-HSSF
Mon code est le suivant:
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);
}
}
Et voici la trace de la pile que je reçois:
Exception dans le thread "principal" java.lang.IndexOutOfBoundsException à java.io. FileInputStream.readBytes (méthode native) à java.io.FileInputStream.read (FileInputStream.java:199) à org.apache.poi.hssf.record.RecordInputStream.nextRecord (RecordInputStream.java:106) à org.apache .poi .hssf.eventusermodel.HSSFRecordStream.getNextRecord (HSSFRecordStream.java:128) à org.apache.poi.hssf.eventusermodel.HSSFRecordStream.nextRecord (HSSFRecordStream.java:93) à org.apache.poi.hssf.eventusermodel.HSSFEventFactory .genericProcessEvents (HSSFEventFactory.java:141) à org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processEvents (HSSFEventFactory.java:98) à src.Excel.main (Excel.java:21)
Merci beaucoup! Je sais, je suis tout simplement paresseux et j'aurais pu regarder moi-même la source du POI, mais j'espère que quelqu'un ici sera capable de montrer rapidement ce que j'ai fait de stupide dans mon code.