首页 文章

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

提问于
浏览
0

我正在尝试阅读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-架构 - 3.11.jar

POI暂存器,3.11-20141221.jar

XMLBeans的-2.3.0.jar

还添加

STAX的API-1.0.1.jar

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

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

2 回答

  • 1

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

    OOXML jar需要stax实现,但现在Apache POI需要Java 6,JRE提供了该依赖,并且不需要额外的stax jar . OOXML jar用于需要DOM4J,但代码现已更改为使用JAXP,并且不需要额外的dom4j jar .

  • 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文件上写入,有两个选项 .

    • 写入.xls文件 .

    工作簿工作簿=新HSSFWorkbook(); Sheet sheet = workbook.createSheet(“My Sheet”);行row = sheet.createRow(0); Cell cell = row.createCell(0);

    • 写入.xlsx文件

    工作簿工作簿=新的XSSFWorkbook(); Sheet sheet = workbook.createSheet(“My Sheet”);行row = sheet.createRow(0); Cell cell = row.createCell(0);

    要从excel文件中读取:

    Workbook workbook = WorkbookFactory.create(inputStream);
    

相关问题