我的代码如下:
import java.util.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.*;
public class ExcelRead{
public static void main(String[] args){
String docName = "C:\\Users\\Name\\Desktop\\excelExample.xlsx";
try{
InputStream xlsxDoc = new FileInputStream(docName);
XSSFWorkbook wb = new XSSFWorkbook(xlsxDoc);
XSSFSheet sheet = wb.getSheetAt(0);
System.out.println(sheet.getSheetName());
}
catch(Exception e){
e.printStackTrace();
}
}
}我得到的错误代码是:
Exception in thread "main" java.lang.NoSuchMethodError:
org.apache.poi.util.POILogger.log(ILjava/lang/Object;)V
at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.parseRelationshipsPart(PackageRelationshipCollection.java:313)
at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:163)
at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:131)
at org.apache.poi.openxml4j.opc.PackagePart.loadRelationships(PackagePart.java:559)
at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:112)
at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:83)
at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:128)
at org.apache.poi.openxml4j.opc.ZipPackagePart.<init>(ZipPackagePart.java:78)
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:243)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:673)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:274)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:258)
at AristocratProject_1.ExcelRead.main我已经添加到netbeans库中的Apache的依赖项是:
poi-3.17.jar
poi-ooxml-3.11.jar
xmlbeans-2.6.0.jar从这里开始,我几乎不知道该怎么做。有人能告诉我我的代码是否错了,或者我需要什么其他的依赖项吗?
发布于 2018-04-06 17:22:05
好的,正如rgettman解释的,我必须将poi-ooxml-3.11.jar更新为poi-ooxml-3.17.jar,这可以通过重新下载二进制源文件并提取.zip文件来完成。在更新了这两种方法之后,我得到了另一个错误,并通过添加公共集合4-4.1.jar和poi-ooxml 3.17.jar修复了这个错误。添加这些依赖项后,我的代码将运行。希望这对未来的任何人都有帮助。
发布于 2021-01-21 16:52:15
发布于 2022-02-15 14:48:35
这个问题必须由apache团队解决。无论如何,@Fancypants753 753中提到的快速解决方法是确保jars的版本相同。如果其中任何一个是不同的,肯定会出现这个问题。我最近偶然发现了这个问题。
在我的例子中,我不得不将评级从5.2.0降到4.1.2
之前,我运行这些依赖项。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>但是现在,为了确保所有的版本都是相同的版本,我不得不将其降级到4.1.2,而且因为现在用于poi-ooxml的最新版本是4.1.2,所以我不能运行比其他版本更高的版本。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>https://stackoverflow.com/questions/49697610
复制相似问题