Excel读取错误:标头签名无效。 如何解决?
我从浏览器上传一个Excel文件。 我正在使用POI jar。 但是得到错误无效的头部签名; 阅读3255307777713450285,预计-2226271756974174256
在我已经使用的两个jsp文件之下:JSP 1:
<form action="Upload.jsp" enctype="MULTIPART/FORM-DATA" method=post > <input type="file" name="filename" /> <input type="submit" value="Upload" /> </form>
JSP 2:Upload.jsp
try{ InputStream file = request.getInputStream(); POIFSFileSystem myFileSystem = new POIFSFileSystem(file); HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); HSSFSheet mySheet = myWorkBook.getSheetAt(0); Iterator rowIter = mySheet.rowIterator(); rowIter.next(); while (rowIter.hasNext()) { HSSFRow myRow = (HSSFRow) rowIter.next(); Iterator cellIter = myRow.cellIterator(); cellIter.next(); System.out.println(((HSSFCell)cellIter.next()).toString()); } }catch(Exception ex){ System.out.println(ex.getMessage()); }
但在线POIFSFileSystem myFileSystem =新的POIFSFileSystem(文件);
如何解决这个问题?
你得到这个错误,因为你的文件实际上不是一个Excel .xls文件,这是另一回事。
我build议你尝试在记事本中打开文件,并在那里看看。 几乎所有这种types的错误最终都是.csv或.html文件已被重命名为.xls。 Excel会很高兴地加载html文件(将表格作为电子表格)和csv文件,并且不会警告您在它们上有错误的扩展名。
请注意,如果将.xlsx文件重命名为.xls,并将其传递给POI的POIFSFileSystem或HSSFWorkbook,则会得到一个更具体的错误,警告您已经有.xlsx文件。 你只是得到这个错误,因为POI完全不知道你的文件是什么,只是它不是.xls
只是一个idee,如果你使用maven确保在资源标签过滤设置为“ false ”。 否则,maven往往会在复制阶段破坏xls文件
在你的pom.xml中