簡體   English   中英

如何在 Android/Java 中讀取 Apache POI 中的 xlsx 文件

[英]How to read xlsx file in Apache POI in Android/Java

我正在嘗試讀取 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 文件。

我不知道如何做到這一點。

嘗試在沒有 stax-api 的情況下運行。 使用 stax-api.jar 在 poi > 3.9 中沒有幫助,如果您使用 Java 6 或更高版本可能會導致沖突。 根據 Apache poi 組件頁面

OOXML jar 需要 stax 實現,但現在 Apache POI 需要 Java 6,該依賴項由 JRE 提供,不需要額外的 stax jar。 OOXML jar 過去需要 DOM4J,但現在代碼已更改為使用 JAXP,並且不需要額外的 dom4j jar。

在您的代碼中添加以下依賴項。

<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 文件。

    工作簿工作簿 = new HSSFWorkbook(); Sheet sheet = workbook.createSheet("My Sheet"); 行行= sheet.createRow(0); 單元格單元格 = row.createCell(0);

  2. 寫入 .xlsx 文件

    工作簿工作簿 = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("My Sheet"); 行行= sheet.createRow(0); 單元格單元格 = row.createCell(0);

從excel文件中讀取:

Workbook workbook = WorkbookFactory.create(inputStream);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM