23

I'm trying to do work upgrading a Java application to handle .xlsx, using a newer POI library than our existing one. I'm having issues similar to those mentioned in the comments to the answer here: Apache POI, using both XSSF and HSSF

I'm pointing the new ss.usermodel, but it keeps telling me it can't resolve the XSSF workbook declaration:

Workbook xlsImport = new XSSFWorkbook();

I dug through some of their documentation and saw that XSSFWorkbook isn't a part of org.apache.poi.ss.usermodel. It's a part of org.apache.poi.xssf.usermodel.XSSFWorkbook. But there's no poi.xssf for me to import. Am I pointing to the wrong thing? I'm using POI 3.7 Thanks for any help you can provide.

4

6 回答 6

38

您需要包含 poi-ooxml jar 来获取 XSSF 库。poi jar 只有 HSSF 库。

于 2011-05-09T08:39:27.303 回答
15

您需要包含 poi-ooxml 罐子。您可以将其添加到 pom.xml 文件中

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.10-FINAL</version>
</dependency>
于 2014-04-13T19:47:27.753 回答
4

首先,您需要将正确的 jar 文件包含到您的库 poi-ooxml-schemas-3.8-20120326.jar 中。您可以在http://poi.apache.org/download.html找到这些。您需要将以下链接添加到您的 java 文件中。

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
于 2012-07-20T11:38:28.037 回答
1

如果您创建了 Maven 项目,请在 pom.xml 文件中使用以下依赖项

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>

否则将其导入您的java文件

导入 org.apache.poi.ss.usermodel.Workbook;

于 2015-02-28T07:03:15.057 回答
0

Earlier It was giving error like below when I was using maven dependency , but after using downloaded binary jar files i.e. : "https://poi.apache.org/download.html" of poi of latest version its working fine for me .

Getting error saying : "IncompatibleClassChangeError: Found interface org.apache.poi.util.POILogger, but class was expected
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.parseRelationshipsPart(PackageRelationshipCollection.java:303)
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:163)
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:133)
    at org.apache.poi.openxml4j.opc.PackagePart.loadRelationships(PackagePart.java:570)
    at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:723)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:302)
    at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
    at com.glide.platform_ml.regressionTests.classification.ExcelCallTest.readData(ExcelCallTest.java:40)
    at com.glide.platform_ml.regressionTests.classification.ExcelCallTest.main(ExcelCallTest.java:29)
"
于 2020-12-04T10:26:40.603 回答
0

https://stackoverflow.com/a/65141876/5886712

早些时候,当我使用 maven 依赖项时,它给出了如下错误,但是在使用下载的二进制 jar 文件后,即:最新版本的 poi 的“https://poi.apache.org/download.html”对我来说工作正常。

Getting error saying : "IncompatibleClassChangeError: Found interface org.apache.poi.util.POILogger, but class was expected
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.parseRelationshipsPart(PackageRelationshipCollection.java:303)
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:163)
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:133)
    at org.apache.poi.openxml4j.opc.PackagePart.loadRelationships(PackagePart.java:570)
    at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:723)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:302)
    at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
    at com.glide.platform_ml.regressionTests.classification.ExcelCallTest.readData(ExcelCallTest.java:40)
    at com.glide.platform_ml.regressionTests.classification.ExcelCallTest.main(ExcelCallTest.java:29)
"
于 2020-12-04T10:27:51.650 回答