在尝试使用POI-HSSF v3.2解析 MS Excel 文件时,我收到了 IndexOutOfBoundsException。我试图阅读的电子表格不是空的,它是使用 MS Excel 2003 创建的,POI 包中包含的 BiffViewer 解析它没有问题。
我的代码如下:
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);
}
}
这是我得到的堆栈跟踪:
org.apache.poi.hssf.record.RecordInputStream 的 java.io.FileInputStream.read(FileInputStream.java:199) 的 java.io.FileInputStream.readBytes(Native Method) 的线程“main”java.lang.IndexOutOfBoundsException 中的异常.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.processEvents(HSSFEventFactory.java:98) 在 src.Excel.main( Excel.java:21)
非常感谢!我知道,我很懒惰,本可以自己查看 POI 源,但是,希望这里有人能够迅速指出我在代码中所做的任何愚蠢的事情。