不推荐使用getCellType

我正在使用org.apache.poi 3.15读取一个excel文件(文件扩展名为xlsx)。

这是我的代码:

try (FileInputStream fileInputStream = new FileInputStream(file); XSSFWorkbook workbook = new XSSFWorkbook(file)) { XSSFSheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "(Integer)\t"); break; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "(String)\t"); break; } } System.out.println(""); } } catch (Exception e) { e.printStackTrace(); } 

我得到一个警告, cell.getCellType()已被弃用。 谁能告诉我的替代?

被接受的答案显示了弃用的原因,但错过了select:

 CellType getCellTypeEnum() 

CellType是枚举描述单元格的types。

计划是将POI 4.0中的getCellType()重命名为getCellType()

您可以使用:

 cell.getCellTypeEnum() 

进一步比较单元格types,你必须使用CellType如下: –

 if(cell.getCellTypeEnum() == CellType.STRING){ . . . } 

你可以参考文档。 它非常有帮助: –

https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html

从文档 :

int getCellType()已弃用。 POI 3.15。 将来会返回一个CellType枚举。

返回单元格types。 将在POI版本4.0中返回CellType 。 为了向前兼容,请勿在代码中硬编码单元格types文字。

看起来3.15没有提供令人满意的解决scheme:或者使用Cell.CELL_TYPE_ *的旧样式,或者使用标记为弃用的方法getCellTypeEnum()。 很多干扰很less增加价值…

FileInputStream fis = new FileInputStream(new File(“C:/Test.xlsx”));

  //create workbook instance XSSFWorkbook wb = new XSSFWorkbook(fis); //create a sheet object to retrieve the sheet XSSFSheet sheet = wb.getSheetAt(0); //to evaluate cell type FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); for(Row row : sheet) { for(Cell cell : row) { switch(formulaEvaluator.evaluateInCell(cell).getCellTypeEnum()) { case NUMERIC: System.out.print(cell.getNumericCellValue() + "\t"); break; case STRING: System.out.print(cell.getStringCellValue() + "\t"); break; default: break; } } System.out.println(); } 

此代码将正常工作。 使用getCellTypeEnum()并比较使用NUMERIC或STRING。