因为Excel存在新老两种版本(后缀不同),而poi提供了两种不同的API对应不同的版本
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls
XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx
当导入的Excel版本与API版本不一致的时候会抛出异常如下:
org.apache.poi.poifs.filesystem.OfficeXmlFileException:
The supplied data appears to be in the Office 2007+ XML.
You are calling the part of POI that deals with OLE2 Office Documents.
You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
代码中采用的API为(支持老版本)
HSSFWorkbook workbook = new HSSFWorkbook(in);
这段异常表示excel版本和workbook的类型不匹配导致的, HSSFWorkbook不支持Excel2007之后的文件版本, poi提供了XSSFWorkbook类型支持后面的版本
XSSFWorkbook workbook = new XSSFWorkbook(in);
但是这段代码对老版本的excel不兼容, 查看文档和源码发现HSSFWorkbook和XSSFWorkbook都实现了Workbook接口, 按照网上推荐的方法, 把代码修改成了
Workbo