我引用了 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-
Http://repo1.maven.org/maven2/org/apache/poi/poi-ooxml/3.11/poi-ooxml-3.11.jar
对于 Maven2,添加下面的依赖项-
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.11</version> </dependency>
OOXML 文件格式的类(例如。Xlsx)位于另一个 Jar 文件中。您需要在项目中包含 poi-ooxml jar 以及它的依赖项
您可以在 POI 网站 给你上获得所有组件及其依赖项的列表。
您可能需要下载 3.11二进制包,从中获取 poi-ooxml jar,以及 ooxml-lib目录中的依赖项。将这些内容导入到项目中,就可以进行排序。
poi-ooxml
ooxml-lib
或者,如果您使用 Maven,您可以使用 看这里获得您想要依赖的工件列表,但是它想要类似于:
POI-ooxml maven 依赖项将自动为您提供主 POI jar 和依赖项。如果您希望使用非电子表格格式,还需要依赖于 poi-scratchpad工件,详见 POI 组件页
poi-scratchpad
1)从 POI 文件夹中导入所有罐子 2)从 ooxml 文件夹导入 POI 文件夹的子目录下的所有 JARS 文件 3)从 POI 文件夹的子目录 lib 文件夹中导入所有 JARS 文件
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(); }
如果你使用 Maven:
ArtifactId 中的 poi = > poi-ooxml
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.12</version> </dependency>
您没有描述环境,无论如何,您应该下载 apache poi 库。如果您正在使用 eclipse,右键单击您的根项目,因此属性和在 java 构建路径中添加外部 jar 并在您的项目中导入这些库:
Xmlbeans-2.6.0; poi-ooxml-schema-... ; poi-ooxml-... ; poi-... ; ;
我需要以下文件来实现:
(虽然说实话,我不完全确定它们都是必要的... ...)这有点令人困惑,因为它们就是这样包装的。我需要手动将它们放在我自己的“ lib”文件夹中,然后添加引用..。
Maven 似乎总是下载超过我需要的东西,所以我总是手动放置库/dll 之类的东西。
问题: 当导入“ org.apache.poi.xssf.usermodel. XSSFWorkbook”类时,在 eclipse 中显示一个错误。
解决方案: 使用此 maven 依赖项解决此问题:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency>
哈里 · 克里希纳 · 尼拉
我遇到了同样的问题,所以我仔细查看了 poi-3.17.jar 文件,发现里面没有 xssf 包。
然后我浏览了其他文件,发现 xssf 在 poi-ooxml-3.17. jar 中
所以看起来解决方案是
poi-ooxml-3.17.jar
你的项目,因为这似乎使它工作(至少对我来说)
我在 app“ build.gradle”中添加了以下内容
implementation 'org.apache.poi:poi:4.0.0' implementation 'org.apache.poi:poi-ooxml:4.0.0'
在尝试了多种方法之后,真正奏效的是: 1. 手动下载“ poi”和“ poi-ooxml” 2. 将这些 d/w jar 添加到“ Maven 依赖项”中
我找到解决办法了,伙计们
你需要记住一些观点。
有两种不同的依赖关系,一种是(Poi) ,另一种是(< strong > 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 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(); } }
我尽我最大的努力给你解决方案,如果你在这里面临任何问题的意见,我会尝试 来解决这个问题。
继续学习伙计们! !
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>
首先,您需要在 pom.xml 中添加以下依赖项:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.2</version> </dependency>
注意: 如果您的项目仍然无法找到依赖项,请在您的模块-info. java 中添加以下代码行:
requires poi.ooxml;