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中