上传excel解析存到数据库时报:
org.apache.poi.poifs.filesystem.Office
The supplied data appears to be in the Office 2007+
You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
该错误意思是说,文件中的数据是用Office2007+
比如使用XSSF来代替HSSF。
断点跟踪到:new HSSFWorkbook(file.getInputStream)出错,在网上找了很多方法,都不行,最后在一个犄角旮旯里找到如下方法
Workbook wb=WorkbookFactory.create(file.getInputStream);
用的maven依赖(版本号最好一致,否则容易出错)
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14-beta1</version></dependency><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-oo</artifactId> <version>3.14-beta1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-oo</artifactId> <version>3.14-beta1</version> </dependency>
原文网址::http://www.itnose.net/detail/6144353.html
springmvc上传excel解析存到数据库原文博客:http://blog.csdn.net/jinwufeiyang/article/details/52216218
將原博客以下方法稍作了修改。
public List<Customer> getExcelInfo(String fileName, MultipartFile Mfile) { List<Customer> customerList = new ArrayList<Customer>(); try { // 验证文件名是否合格 if (!validateExcel(fileName)) { return null; } } catch (Exception e) { e.printStackTrace(); } // 根据文件名判断文件是2003版本还是2007版本 boolean isExcel2003 = true; if (WDWUtil.isExcel2007(fileName)) { isExcel2003 = false; } try { customerList = getExcelInfo(Mfile.getInputStream(), isExcel2003); } catch (IOException e) { e.printStackTrace(); } return customerList;}
原标题:java解析excel2003和excel2007:The supplied data appears to be in the office 2007+XML Polonly supports OLE2 office documents
关键词:JAVA