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

时间:2015-05-18 22:17:37

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

我正在尝试阅读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)

在“工作簿myWorkBook = new XSSFWorkbook(fileStream); ”这一行。

Apache POI jar文件: -

POI-3.11-20141221.jar

POI-OOXML-3.11.jar

POI-OOXML-架构 - 3.11.jar

POI暂存器-3.11-20141221.jar

的xmlbeans-2.3.0.jar

还要添加

stax-api-1.0.1.jar

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

我没有得到如何做到这一点。

2 个答案:

答案 0 :(得分:1)

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

  

OOXML jar需要stax实现,但现在需要Apache POI   需要Java 6,该依赖项由JRE提供,而不是   需要额外的stax罐子。 OOXML罐子过去需要   DOM4J,但代码现在已经改为使用JAXP而没有额外的   dom4j罐子是必需的。

答案 1 :(得分:0)

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

<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工作簿=新的HSSFWorkbook(); 工作表工作表= workbook.createSheet(“我的工作表”); 行row = sheet.createRow(0);             单元格cell = row.createCell(0);

  2. 要写入.xlsx文件

    Workbook工作簿=新的XSSFWorkbook();     工作表工作表= workbook.createSheet(“我的工作表”);     行row = sheet.createRow(0);                 单元格cell = row.createCell(0);

要读取Excel文件:

Workbook workbook = WorkbookFactory.create(inputStream);