原springboot系统中DictController,导出字典Excel报错:
通过上传(MultipartFile file) 文件获取流,然后通过jxsl解析excel文件
相应代码:
InputStream ins = file.getInputStream();
InputStream inputXLS = ins;
XLSReadStatus readStatus = mainReader.read( inputXLS, beans);
报错如下:
org.apache.poi.openxml4j.exceptions.InvalidFormatException: Your InputStream was neither an OLE2 stream, nor an OOXML stream。
如果换成写死路径的文件,用以下的方式获取流则不会出现以上问题
String path = "";
InputStream inputXLS = new BufferedInputStream(new FileInputStream(new File(path)));
XLSReadStatus readStatus = mainReader.read( inputXLS, beans);
查看源码:
Workbook#create 中 FileMagic.valueOf(is)对流进行过处理,解析出来不是OLE2 或者OOXML就会报以上error。
后端获取文件的inputStream流 之前,即文件上传的时候是有对该文件流做过什么处理吗,为啥写死的路径的文件可以导入,通过上传的文件则不能导入。