读取03版excel正常但是07会报下面的错误,
org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
后缀虽然是xlsx但是会存在格式问题:
private Workbook getWorkbook(InputStream in) throws IOException,InvalidFormatException {
if (!in.markSupported()) { //hasPOIFSHeader和hasOOXMLHeader的要求,inputStream must support mark and reset, or be a PushbackInputStream
in = new PushbackInputStream(in, 8);
}
if (POIFSFileSystem.hasPOIFSHeader(in)) { //后缀是xlsx但是是ole2格式的或更低版本
return new HSSFWorkbook(in);
}
if (POIXMLDocument.hasOOXMLHeader(in)) { //后缀是xlsx但是是OOXML格式的或更高版本
return new XSSFWorkbook(OPCPackage.open(in));
}
throw new IllegalArgumentException("你的excel版本目前poi解析不了");
}
POI 读取 03版 用的是 HSSF, 07版及以后的是 XSSF, 你看一下是不是你用的不对
我把POI的jar包都导入了正常说不会是缺少jar包的问题
建立excel的时候, 要在相应版本下建excel, 比如07版,要在office 07下建立这个Excel,如果把后缀改成 .xls当作03版是不对的,会报错,如果还有问题,你看看数据量,03和07支持的数据量是不一样的