读取xlsx文件遇java.io.IOException错误,请求技术协助
读取XLSX文件时遇到ZipException错误的问题排查
尝试读取Excel文件时出现如下错误:
java.io.IOException: Failed to read zip entry source at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:106) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:342) at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init> (XSSFWorkbook.java:285) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) at org.testng.TestRunner.privateRun(TestRunner.java:767) at org.testng.TestRunner.run(TestRunner.java:617) at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at org.testng.SuiteRunner.run(SuiteRunner.java:240) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198) at org.testng.TestNG.runSuitesLocally(TestNG.java:1123) at org.testng.TestNG.run(TestNG.java:1031) at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66) at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:109) Caused by: java.util.zip.ZipException: invalid entry size (expected 0 but got 1052 bytes) at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:384) at java.util.zip.ZipInputStream.read(ZipInputStream.java:196) at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.read(ZipSecureFile.java:213) at java.io.FilterInputStream.read(FilterInputStream.java:107) at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource$FakeZipEntry.<init>(ZipInputStreamZipEntrySource.java:132) at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStreamZipEntrySource.java:56) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:99) ... 28 more
使用的代码如下:
path="C://Users//SHE_267.xlsx"; xls = new ExcelReader(path); public ExcelReader(String path) { this.path = path; try { fis = new FileInputStream(new File(path)); if (path.endsWith(".xls")) { System.out.println("file extension is xls"); workbook = new HSSFWorkbook(fis); } else if (path.endsWith(".xlsx")) { System.out.println("file extension is xlsx"); workbook = new XSSFWorkbook(fis); } sheet = workbook.getSheetAt(0); fis.close(); } catch (Exception e) { e.printStackTrace(); } }
补充说明:
- 试过以下代码,能读取Excel但无法写入文件:
workbook = WorkbookFactory.create(new File(path)); - 将SHE_267.xlsx的内容复制到新的xlsx文件中,使用同一代码就能正常读取;甚至在该文件内新建工作表并复制原sheet1内容后,访问新工作表也能正常运行。想知道原sheet1存在什么问题,忽略了哪些细节。
内容的提问来源于stack exchange,提问作者Sheena Tyagi
相关产品推荐
相关产品推荐

