一言不合先抛个异常
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)
HSSFWorkbook workbook = new HSSFWorkbook(in);
这段异常表示excel版本和workbook的类型不匹配导致的, HSSFWorkbook不支持Excel2007之后的文件版本, poi提供了XSSFWorkbook类型支持后面的版本,
XSSFWorkbook workbook = new XSSFWorkbook(in);
但是这段代码对老版本的excel不兼容, 查看文档和源码发现HSSFWorkbook和XSSFWorkbook都实现了Workbook接口, 按照网上推荐的方法, 把代码修改成了
Workbook workbook = null;
try{
workbook = new HSSFWorkbook(in);
}catch(Exception e){
workbook = new XSSFWorkbook(in);
}
然后. 成功的抛出了另一个异常
java.io.IOException: Stream closed
这.... 节奏不对啊, 进入try块之后顺手把流关了, 这个方法也搞不定, 难道不用流来做参数?? 还是先判断一下流的类型????