Apache Poi 3.13找不到打开XLSX文件的类

莫里斯

我正在使用apache POI来通过Java读取和写入Excel的文件,但是我无法在源中找到WorkbookFactoryXSSFWorkbook来读取xlsx文件。

pom.xml

<poi.version>3.13</poi.version>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>${poi.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>${poi.version}</version>
</dependency>

我在apache poi的变更日志中找不到任何可能导致此行为的信息。

编辑:这是我的实现(目前只是一种简单的方法)

public static HSSFSheet getXLSSheet(String fileName, int sheetIndex) throws IOException {
    InputStream inputStream = new FileInputStream(fileName);
    HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
    return workbook.getSheetAt(sheetIndex);
}

我试图打开XLSX文件,但是由于找不到其他两个类(WorkbookFactory或XSSFWorkbook),所以我会遇到类似以下的错误:

org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)

提前致谢。

加格拉法尔

首先,我可以向您保证POI网站上记录WorkbookFactoryXSSFWorkbook类包含在POI-OOXML 3.13 jar中

$ unzip -l .m2/repository/org/apache/poi/poi-ooxml/3.13/poi-ooxml-3.13.jar | grep WorkbookFactory
  6041  2015-09-22 00:22   org/apache/poi/ss/usermodel/WorkbookFactory.class

但是,正如您发布的例外所明确指出的那样,您的代码将永远无法用于XLSX文件,需要对其进行更改。好吧,对于这个以及其他一些问题……例如,如果您有文件,请不要使用InputStream

您的代码应该更像是:

import java.io.File;
import org.apache.poi.ss.usermodel.*;

public static Sheet getExcelSheet(String fileName, int sheetIndex) throws IOException {
   File file = new File(fileName);
   Workbook workbook = WorkbookFactory.create(file);
   return workbook.getSheetAt(sheetIndex);
}

这将同时适用于xlsxlsx文件,并且比使用输入流的内存要少。只要您告诉maven依赖poi-ooxmljar,就会自动获得所有其他需要的依赖

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用Apache POI打开XLSX文件:NoClassDefFoundError

来自分类Dev

使用Apache POI打开xls和xlsx

来自分类Dev

Apache POI读取xlsx NPE

来自分类Dev

读取xlsx文件行时的Apache POI ClassCastException

来自分类Dev

读取xlsx文件行时的Apache POI ClassCastException

来自分类Dev

Apache Poi更新XLS文件

来自分类Dev

Apache poi 文件已损坏

来自分类Dev

Apache POI和文件删除类

来自分类Dev

apache poi jar缺少类文件

来自分类Dev

Apache POI和文件删除类

来自分类Dev

用Apache POI打开Excel-XML

来自分类Dev

Apache POI 创建了以后无法打开的 xlsx 文件。检测到邮编炸弹

来自分类Dev

Apache POI Powerpoint,找不到 XMLSlideShow.createChart()

来自分类Dev

重命名XSSFTable的头部与Apache POI导致腐败XLSX文件

来自分类Dev

为 XLSX Apache poi 使用 Java 临时文件

来自分类Dev

通过apache POI上传xlsx文件时如何修复AbstractMethodError

来自分类Dev

Apache POI测试用例失败,因为它找不到CTExtensionList类

来自分类Dev

使用Apache POI读取.docx文件

来自分类Dev

apache poi错误zip文件已关闭

来自分类Dev

无法使用Apache POI从Excel文件读取

来自分类Dev

Apache POI获得NPE读取xls文件

来自分类Dev

使用Apache POI下载文件

来自分类Dev

Apache POI Zip 文件已关闭

来自分类Dev

Java Apache POI(第3部分)

来自分类Dev

如何通过Apache POI 3.9从xls / xlsx读取时间格式?

来自分类Dev

Apache POI和Null指针... csv转换为xlsx

来自分类Dev

apache poi:无法重新打开工作簿:InvalidOperationException

来自分类Dev

使用 Apache POI 打开 .docx 并使用密码保存

来自分类Dev

Apache POI插入图像