gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:50 24 4
gpt4 key购买 nike

我正在使用 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)

提前致谢。

最佳答案

首先,我可以向您保证 WorkbookFactoryXSSFWorkbook 类包含在 POI-OOXML 3.13 jar 中,如 documented on the POI site

$ 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 文件,它需要更改。好吧,对于那个和其他一些问题......例如Don't use an InputStream if you have a File

您的代码应该更像:

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-ooxml jar,你将自动获得你需要的所有其他依赖项

关于java - Apache Poi 3.13 找不到打开 XLSX 文件的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33693186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com