通过流传入excel解析的问题

做了个excel文件导入的功能,接收excel文件流,先读取文件流头部信息确定文件类型,然后调用poi方法

OPCPackage pkg = OPCPackage.open(inputStream)

报错:NotOfficeXmlFileException:The supplied data appears to be a raw XML file

根据报错信息来看,提示文件流不是.xlsx文件,但是上传的文件确实是.xlsx文件。

原因:

流不能被多次读取,在读取文件流获取头部信息后文件流已经不能再读取了,所以会提示“错误的文件类型”

解决办法:使用 ByteArrayInputStream()缓存流,可以进行多次读取。

ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream xlsxStream = new ByteArrayInputStream(bos.toByteArray());
OPCPackage.open(xlsxStream)


原文地址:https://www.cnblogs.com/wollow/p/11046632.html