[英]Cannot import XSSF in Apache POI
我引用的是 Apache POI 的 3.7 版,並且在執行此操作時出現“無法解決”錯誤:
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
其他引用 POI 的導入語句不會給我錯誤,例如:
import org.apache.poi.ss.usermodel.*;
有任何想法嗎??
要使 OOXML 工作,您需要 POI-OOXML jar,它與 POI jar 分開包裝。
從以下位置下載 POI-OOXML jar -
對於 Maven2 添加以下依賴項 -
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
OOXML 文件格式(例如 XSSF for.xlsx)的類位於不同的 Jar 文件中。 您需要在項目中包含 poi-ooxml jar 及其依賴項
您可以在此處獲取 POI 網站上所有組件及其依賴項的列表。
您可能想要做的是下載3.11 二進制 package ,從中獲取poi-ooxml
jar 以及ooxml-lib
目錄中的依賴項。 將這些導入到您的項目中,您將被分類。
或者,如果您使用 Maven,您可以在此處查看您想要依賴的人工制品列表,但它希望類似於:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
poi-ooxml maven 依賴項將自動為您引入主 POI jar 和依賴項。 如果您想使用非電子表格格式,您還需要依賴poi-scratchpad
工件,如POI 組件頁面中所述
我在應用程序“build.gradle”中添加了以下內容
implementation 'org.apache.poi:poi:4.0.0'
implementation 'org.apache.poi:poi-ooxml:4.0.0'
如果您使用 Maven:
poi => artifactId 中的 poi-ooxml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.12</version>
</dependency>
問題:導入“org.apache.poi.xssf.usermodel.XSSFWorkbook”類時,在 eclipse 中顯示錯誤。
解決方案:使用這個 maven 依賴來解決這個問題:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
——哈里·克里希納·尼拉
我得到了解決方案伙計們
你需要記住一些要點。
有兩種不同的依賴項,一個是 ( poi ),另一個依賴項是 (poi- ooxml ),但請確保您必須在代碼中使用 poi-ooxml 依賴項。
只需在 pom.xml 中添加以下依賴項並保存即可。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
3.保存 pom.xml 之后,您需要嘗試一個小東西,使用 (.) 運算符將嘗試導入/獲取它,最后不會看到任何錯誤,因為現在它已經在您的 package 中導入了該東西.
示例代碼以更好地理解!
package ReadFile;// package
import org.apache.poi.xssf.usermodel.XSSFWorkbook; // automatically added to your code after importing
public class Test
{
public static void Hello() // Method
{
XSSFWorkbook workbook = new XSSFWorkbook();
}
}
我盡力為您提供解決方案,如果您在這里遇到任何問題評論,我會嘗試
解決它。
繼續學習伙計們!!
1) 從 POI 文件夾中導入所有 JARS 2) 從 POI 文件夾的子目錄 ooxml 文件夾中導入所有 JARS 3) 從 libF8 文件夾中導入所有 Z9327422E5DF141D06047C 文件夾的子目錄
String fileName = "C:/File raw.xlsx";
File file = new File(fileName);
FileInputStream fileInputStream;
Workbook workbook = null;
Sheet sheet;
Iterator<Row> rowIterator;
try {
fileInputStream = new FileInputStream(file);
String fileExtension = fileName.substring(fileName.indexOf("."));
System.out.println(fileExtension);
if(fileExtension.equals(".xls")){
workbook = new HSSFWorkbook(new POIFSFileSystem(fileInputStream));
}
else if(fileExtension.equals(".xlsx")){
workbook = new XSSFWorkbook(fileInputStream);
}
else {
System.out.println("Wrong File Type");
}
FormulaEvaluator evaluator workbook.getCreationHelper().createFormulaEvaluator();
sheet = workbook.getSheetAt(0);
rowIterator = sheet.iterator();
while(rowIterator.hasNext()){
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()){
Cell cell = cellIterator.next();
//Check the cell type after evaluating formulae
//If it is formula cell, it will be evaluated otherwise no change will happen
switch (evaluator.evaluateInCell(cell).getCellType()){
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + " ");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + " ");
break;
case Cell.CELL_TYPE_FORMULA:
Not again
break;
case Cell.CELL_TYPE_BLANK:
break;
}
}
System.out.println("\n");
}
//System.out.println(sheet);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
我遇到了同樣的問題,所以我翻遍了 poi-3.17.jar 文件,里面沒有 xssf package。
然后我瀏覽了其他文件,發現 xssf int poi-ooxml-3.17.jar
所以似乎解決方案是添加
poi-ooxml-3.17.jar
到你的項目,因為這似乎使它工作(至少對我來說)
在嘗試了多件事之后,真正奏效的是:1.手動下載“poi”和“poi-ooxml” 2.將這些d/w jars添加到“Maven Dependencies”中
你沒有描述環境,反正你應該下載apache poi庫。 如果您使用的是 eclipse,請右鍵單擊您的根項目,然后在屬性和 java 構建路徑中添加外部 jar 並在您的項目中導入這些庫:
xmlbeans-2.6.0; poi-ooxml-schemas-...; poi-ooxml-... ; 點-....;
我的實現需要以下文件:
(雖然老實說,我不完全確定它們都是必需的......)這有點令人困惑,因為它們是這樣包裝的。 我需要將它們手動放置在我自己的“lib”文件夾中,然后添加引用...
Maven 似乎總是下載比我需要的多,所以我總是手動放置庫/dll 和類似的東西。
2021 年 11 月 6 日的實際情況:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.1.0</version>
</dependency>
添加 poi 和 poi-ooxml 依賴項以使其工作:)
<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-ooxml.version}</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.