java excel 兼容问题_Java之POI读取Excel的解决兼容性问题

这篇博客讲述了在Java中使用POI处理Excel时遇到的兼容性问题,特别是当用户上传2003和2007格式的Excel文件时。通过分析错误日志,确定问题是由于代码只支持XSSFWorkbook(2007格式)导致的。解决方案是使用WorkbookFactory.create()方法来实现对不同格式Excel的兼容性处理。
摘要由CSDN通过智能技术生成

在Java中,使用POI来进行excel的读取和解析是常用的一种做法;在office的excel中存在2007,2003两种不同的格式,通常情况下是以xls/xlsx的不同后缀来区分的,但用户可能不知道这个区别,所以会出现格式无法兼容的异常

1.  POI

POI源自Apache基金会,是其顶级域名项目, POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

2.  Excel 2003和2007之区别

微软针对Excel在2007版本之后的实现中使用了ooxml的格式来描述内容信息,和之前2003版本的excel在实现上有所区别,故在POI中提供了一个新的类来兼容2007版的excel的读取和创建过程。

HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HSSF,XSSF的功能列表对比

2a826f53609b542997a0d905221a4e8d.png

3.  问题描述

在上传excel文件中,解析excel文件,并解析中出现了如下错误信息:

Apr 13, 2015 1:29:08 PM org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet [appServlet] in context with path [/bsettle] threw exception [Request processing failed; nested exception is org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]] with root cause

org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]

at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:203)

at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:673)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值