不推荐使用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。