2 sinat 28941375 sinat_28941375 于 2016.04.29 10:51 提问

Java 导入.xls文件没问题的但是导入.xlsx文件报异常

求指导
org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:41)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:190)
at com.whgj.common.ExcelSheetParser.(ExcelSheetParser.java:38)
at com.whgj.business.home.impl.ImportBusiness.excelToJmjbxx(ImportBusiness.java:49)
at com.whgj.web.action.ImportAction.import_excel(ImportAction.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:471)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Caused by: 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:147)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:596)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:226)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
... 30 more
图片说明

图片说明

在 workbook = new XSSFWorkbook(is);时发生异常

6个回答

CSDNXIAOD
CSDNXIAOD   2016.04.29 11:02

Java程序导入 .xls文件 优化
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

u013946285
u013946285   2016.04.29 11:12

读写xls和xlsx格式时,HSSFWorkbook针对xls,XSSFWorkbook针对xlsx

sinat_28941375
sinat_28941375 回复汤圆_: 好奇怪呀,
接近 2 年之前 回复
sinat_28941375
sinat_28941375 回复汤圆_: 突然发现无论是.xls还是.xlsx都是用HSSFWorkbook
接近 2 年之前 回复
sinat_28941375
sinat_28941375 还没有:dom4j-1.6.1.jar; poi-3.8-beta3-20110606.jar; poi-examples-3.8-beta3-20110606.jar; poi-excelant-3.8-beta3-20110606.jar; poi-ooxml-3.8-beta3-20110606.jar; poi-ooxml-schemas-3.8-beta3-20110606.jar; poi-scratchpad-3.8-beta3-20110606.jar;xmlbeans-2.3.0.jar
接近 2 年之前 回复
u013946285
u013946285 回复sinat_28941375: 你导入的jar是什么版本的?
接近 2 年之前 回复
sinat_28941375
sinat_28941375 截了个图,在new XSSFWorkbook(is)的时候就异常了
接近 2 年之前 回复
sinat_28941375
sinat_28941375 回复汤圆_: public ExcelSheetParser(InputStream is,String suffix) { try { // 获取工作薄workbook if (suffix.equals(".xlsx")) { workbook = new XSSFWorkbook(is); }else if(suffix.equals(".xls")){ hworkbook = new HSSFWorkbook(is); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
接近 2 年之前 回复
u013946285
u013946285 回复sinat_28941375: 代码贴出来看看呢
接近 2 年之前 回复
sinat_28941375
sinat_28941375 对啊,就是分开判断的,但不知道为什么报这个异常
接近 2 年之前 回复
b635781894
b635781894   2016.04.29 11:13

印象中poi对解析xls和xlsx这两种文件需要不同的jar包。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.29 13:32

java提供的POI处理word文档,2003和2007格式的文件需要不同的支持jar包的。
java解析2007版本的xlsx文件的方法参考:http://kxjhlele.iteye.com/blog/321392

sinat_28941375
sinat_28941375   2016.04.29 14:16

![图片说明](https://img-ask.csdn.net/upload/201604/29/1461910606_121014.png)图片说明

u013946285
u013946285   2016.04.29 15:18

图片说明你是这样吗

sinat_28941375
sinat_28941375 我试了3.10的还是报异常
接近 2 年之前 回复
sinat_28941375
sinat_28941375 我的代码也贴在前面了,你看看,也是分开的,new XSSFWorkbook(is);时发生异常
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!