通过流传入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)