【问题标题】:How to read xlsx file in Apache POI in Android/Java如何在 Android/Java 中读取 Apache POI 中的 xlsx 文件
【发布时间】:2015-07-30 13:48:24
【问题描述】:

我正在尝试读取 xls 和 xlsx 文件。能够读取 xls 但对于 xlsx 得到异常:-

java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLEventFactory;
        at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.<clinit>(PackagePropertiesMarshaller.java:45)
        at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161)
        at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141)
        at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:37)
        at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:87)
        at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:272)
        at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
        at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:258)

在“Workbook myWorkBook = new XSSFWorkbook(fileStream);”这一行。

Apache POI jar 文件:-

poi-3.11-20141221.jar

poi-ooxml-3.11.jar

poi-ooxml-schemas-3.11.jar

poi-scratchpad-3.11-20141221.jar

xmlbeans-2.3.0.jar

还要加

stax-api-1.0.1.jar

但无法在 Android Studio 中构建此 jar 文件。

我不知道如何做到这一点。

【问题讨论】:

  • 您的Android版本是否提供javax.xml XML解析库?

标签: java android android-studio apache-poi xlsx


【解决方案1】:

尝试在没有 stax-api 的情况下运行。在 poi > 3.9 中使用 stax-api.jar 没有帮助,如果您使用 Java 6 或更高版本,可能会导致冲突。根据 Apache poi 组件page

OOXML jar 需要 stax 实现,但现在 Apache POI 需要 Java 6,该依赖项由 JRE 提供,并且没有 需要额外的税罐。 OOXML jars 过去需要 DOM4J,但代码现在已更改为使用 JAXP 并且没有额外的 需要 dom4j jar。

【讨论】:

  • 据我所知,罐子似乎没有问题。您可能应该检查您的构建配置并尝试。此版本也使用 xmlbeans-2.6.0.jar。
【解决方案2】:

在您的代码中添加以下依赖项。

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

在excel文件上写有两种选择:

  1. 写入 .xls 文件。

     Workbook workbook = new HSSFWorkbook();
     Sheet sheet = workbook.createSheet("My Sheet");
     Row row= sheet.createRow(0);
     Cell cell = row.createCell(0);
    
  2. 写入 .xlsx 文件

     Workbook workbook = new XSSFWorkbook();
     Sheet sheet = workbook.createSheet("My Sheet");
     Row row= sheet.createRow(0);
     Cell cell = row.createCell(0);
    

从 excel(.xls/.xlsx) 文件中读取:

Workbook workbook = WorkbookFactory.create(inputStream);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2013-03-11
    相关资源
    最近更新 更多