无法在Apache POI中导入XSSF
我引用了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广告牌 –
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的XSSF)位于不同的Jar文件中。 您需要在项目中包含poi-ooxml jar以及它的依赖项
您可以在这里获取POI网站上的所有组件及其依赖项的列表。
你可能想要做的是下载3.11二进制包 , poi-ooxml
获取poi-ooxml
jar以及ooxml-lib
目录下的依赖关系。 将这些导入到您的项目中,您将被sorting。
或者,如果你使用Maven,你可以在这里看到你想要依赖的artifaats的列表,但是它可能是这样的:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.11</version> </dependency>
poi-ooxml maven依赖将自动为你提供主POI jar和依赖关系。 如果您想使用非电子表格格式,那么也需要依赖poi-scratchpad
工件,详见POI组件页面
如果你使用Maven:
poi => poi-ooxml in artifactId
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.12</version> </dependency>
问题:导入在eclipse中显示错误的“org.apache.poi.xssf.usermodel.XSSFWorkbook”类。
解决scheme:使用这个maven dependency来解决这个问题:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency>
哈里克里希纳尼拉
1)从POI文件夹导入所有的JARS 2)从POI文件夹的子目录ooxml文件夹导入所有的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(); }
你没有描述环境,反正你应该下载apache poi库。 如果你使用的是Eclipse,右键单击你的根项目,所以属性和在java构buildpath添加外部jar和导入到你的项目这些库:
xmlbeans-2.6.0; poi-ooxml-schemas- …; poi-ooxml- …; poi ….
我需要下列文件来执行:
- POI-OOXML-架构 – 3.14.20160307.jar
- commons-codec-1.10.jar(这是从Apache获得的压缩文件的“lib”文件夹)
- curvesapi-1.03.jar(在“ooxml-lib”文件夹中)
- POI-3.14-20160307.jar
- POI-OOXML-3.14-20160307.jar
- xmlbeans-2.6.0.jar(在“ooxml-lib”文件夹中)
(虽然说实话,我并不完全确定他们都是必要的……)有点混乱,因为他们是这样打包的。 我需要将它们手动放置在我自己的“lib”文件夹中,然后添加引用…
Maven似乎总是下载比我需要的,所以我总是手动地放置libaries / DLL和类似的东西。