相关疑难解决方法(0)

通过apache poi读取excel文件(在classpath中)

我试图阅读(使用apache poi).xlsx文件,它不在文件系统中但在classpath中.我正在使用maven - 所以它在资源文件夹中.

我的代码是 -

InputStream resourceAsStream = MyReader.class.getClassLoader().getResourceAsStream("test.xlsx");
   Workbook wb = new XSSFWorkbook(resourceAsStream);
Run Code Online (Sandbox Code Playgroud)

我得到了这个例外.

Caused by: java.lang.IllegalArgumentException: MALFORMED
        at java.util.zip.ZipCoder.toString(ZipCoder.java:58) ~[?:1.7.0_51]
        at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:297) ~[?:1.7.0_51]
        at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:121) ~[?:1.7.0_51]
        at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStreamZipEntrySource.java:51) ~[poi
a3]
        at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:88) ~[poi-ooxml-3.11-beta3.jar:3.11-beta3]
        at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:272) ~[poi-ooxml-3.11-beta3.jar:3.11-beta3]
        at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) ~[poi-ooxml-3.11-beta3.jar:3.11-beta3]
Run Code Online (Sandbox Code Playgroud)

当我从文件系统中读取同一文件时,一切都很好.我的代码中是否有错误或者我错过了什么?

UPDATE1:这是在Web应用程序中,因此代码部署在tomcat 7中.

UPDATE2:当我以这种方式读取同一文件时 - 它有效.

File file = new File("C:\\Users\\.....\\test.xlsx");
 FileInputStream fileInputStream = new FileInputStream(file);

 Workbook wb = new XSSFWorkbook(fileInputStream);
Run Code Online (Sandbox Code Playgroud)

谢谢

java excel classpath apache-poi maven

6
推荐指数
1
解决办法
5149
查看次数

标签 统计

apache-poi ×1

classpath ×1

excel ×1

java ×1

maven ×1