我正在尝试阅读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文件。
我没有得到如何做到这一点。
答案 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文件上写入,有两种选择。
要写入.xls文件。
Workbook工作簿=新的HSSFWorkbook(); 工作表工作表= workbook.createSheet(“我的工作表”); 行row = sheet.createRow(0); 单元格cell = row.createCell(0);
要写入.xlsx文件
Workbook工作簿=新的XSSFWorkbook(); 工作表工作表= workbook.createSheet(“我的工作表”); 行row = sheet.createRow(0); 单元格cell = row.createCell(0);
要读取Excel文件:
Workbook workbook = WorkbookFactory.create(inputStream);