第一版:
public static Workbook create(InputStream inputStream) throws Exception {
Workbook workbook = null;
if (!inputStream.markSupported()) {
inputStream = new PushbackInputStream(inputStream, 8);
}
if (POIFSFileSystem.hasPOIFSHeader(inputStream)) {
workbook = new HSSFWorkbook(inp);
}
if (POIXMLDocument.hasOOXMLHeader(inputStream)) {
workbook = new XSSFWorkbook(OPCPackage.open(inputStream));
}
return workbook;
}
后来版本升级后,部分方法不可用了。比如POIXMLDocument.hasOOXMLHeader(inputStream),直接提示没有该方法,新版本去除了此方法
解决办法:
public static Workbook getWorkBook(InputStream inputStream) throws Exception {
//这样写 excel 能兼容03和07
return WorkbookFactory.create(inputStream);
}
WorkbookFactory.create(inputStream)里面包含了判断2003/2007版本等。
源码代码片段