簡體   English   中英

Apache Poi 3.13無法找到打開XLSX文件的類

[英]Apache Poi 3.13 can't find classes to open XLSX files

我正在使用apache POI用Java讀取和寫入Excels的文件,但是我無法在源代碼中找到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罐中,如POI站點上所述

$ 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-ooxml jar,您將獲得所需的所有其他依賴項

XSSFWorkbook提供了3.11版本的Apache POI。

apache POI的源代碼

嘗試使用此版本的apache poi。

此外,它仍然存在於主干:

apache POI的源代碼

我相信問題在於你maven本地存儲。 嘗試從maven本地存儲庫中刪除poi folederes並重新下載依賴項。

另外,請不要忘記將所有來自HSSFWorkbook呼叫HSSFWorkbookXSSFWorkbook ,因為XLSX文件僅通過XSSFWorkbook打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM