public void process(File file) throws Exception {
OPCPackage pkg = OPCPackage.open(file);
XSSFReader r = new XSSFReader(pkg);
SharedStringsTable sst = r.getSharedStringsTable(); XMLReader parser = fetchSheetParser(sst);
records.clear(); XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) r.getSheetsData();
InputStream sheet = null;
InputSource sheetSource = null;
while (iter.hasNext()) {
curRow = 0;
sheetIndex++;
sheet = iter.next();
String sheetName = iter.getSheetName();
System.out.println(sheetName);
try {
sheetSource = new InputSource(sheet);
parser.parse(sheetSource);
} finally {
if (null != sheet) {
sheet.close();
}
}
}
//作内存清理
pkg = null;
r = null;
sst = null;
parser = null;
iter = null;
sheetSource = null;
}public XMLReader fetchSheetParser(SharedStringsTable sst)
throws SAXException {
XMLReader parser = XMLReaderFactory
.createXMLReader("org.apache.xerces.parsers.SAXParser");
this.sst = sst;
parser.setContentHandler(this);
return parser;
}
解析EXCEL2007
我导入某个EXCEL模版时
 运行到parser.parse(sheetSource);报错!
 java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
 但是我导入其他2007模版时就没有问题,为什么?
Excel