Answers:
为了使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的XSSF)位于另一个Jar文件中。您需要在项目中包括poi-ooxml jar及其依赖项
你可以得到所有的组件和它们的POI网站上依赖列表在这里。
您可能想要做的是下载3.11二进制软件包,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'
问题:导入“ org.apache.poi.xssf.usermodel.XSSFWorkbook”类时,在日食中显示错误。
解决方案:使用此Maven依赖关系可以解决此问题:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
-哈里·克里希纳·内埃拉
1)从POI文件夹导入所有JARS 2)从POI文件夹的子目录ooxml文件夹导入所有JARS 3)从lib文件夹(POI文件夹的子目录)导入所有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();
}
我需要以下文件来实现:
(尽管说实话,我不确定它们是否全部都是必需的...)这有点令人困惑,因为它们是以这种方式包装的。我需要将它们手动放置在我自己的“ lib”文件夹中,然后添加引用。
Maven似乎总是下载比我需要的更多的东西,因此我总是手动放置libaries / dll和类似的东西。