// 判断文件类型
if ((".xls").equalsIgnoreCase(fileType)) {
return new HSSFWorkbook(inputStream);
} else if ((".xlsx").equalsIgnoreCase(fileType)) {
return new XSSFWorkbook(inputStream);
} else {
log.error("Excel 文件解析失败,格式错误!");
throw new LjBaseRuntimeException(-9999, "文件解析失败,格式错误!");
.xls可以
.xlsx office保存得也可以
.xlsx wps得不行
org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg HSSF instead of XSSF)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:147)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:175)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:299)
at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
求大神指教
后缀名有时候是假的
The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg HSSF instead of XSSF)
这段描述已经很清楚了 让你试下用HSSF去读取