日期:2014-05-17  浏览次数:20678 次

导入Excel表时候报错
异常:java.io.IOException: Invalid header signature; read 4503608217567241, expected 

在网上找到的解决方案:java.io.IOException: Invalid header signature; read 4503608217567241, expected -2226271756974174256

用POI读取Excel文件时报错。通常的原因是读取的文件头信息不对,可能是类似于将txt文件的后缀名直接改成xls,或者由其他软件导出成的Excel(那导出的软件本身写的不好),需要用Excel打开(如果能打的开的话)然后另存为一下,就可以读取了

 

*打开文件另存为97-2003版本的exlce文件

我不明白: 上传文件后,怎么另存为 97-2003版本 什么意思?

------解决方案--------------------
探讨
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String filePath = new String(request.getParameter("file").getBytes(
"ISO-8859-1"), "gb2312");//如果这句抛错的……

------解决方案--------------------
2003版的Excel:
InputStream is = new FileInputStream(path);
POIFSFileSystem os = new POIFSFileSystem (inStream);
HSSFWorkbook wb = new HSSFWorkbook(os); // 读取excel工作簿
2007版:
InputStream is = new FileInputStream(path); 
XSSFWorkbook wb = new XSSFWorkbook(inStream); // 读取excel工作簿

可通过 Excel扩展名来判断是03版的还是07版的
03的是xls,07的是xlsx