Alternativa al obsoleto getCellType

Estoy leyendo un archivo de Excel (extensión de archivo xlsx) usando org.apache.poi 3.15.

Este es mi código:

try (FileInputStream fileInputStream = new FileInputStream(file); XSSFWorkbook workbook = new XSSFWorkbook(file)) { XSSFSheet sheet = workbook.getSheetAt(0); Iterator rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator 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(); } 

Recibo una advertencia de que cell.getCellType() está en desuso. ¿Alguien puede decirme la alternativa?

La respuesta aceptada muestra el motivo de la desaprobación pero no menciona la alternativa:

 CellType getCellTypeEnum() 

donde CellType es la enumeración que describe el tipo de la celda.

El plan es cambiar el nombre de getCellTypeEnum() a getCellType() en POI 4.0.

Puedes usar:

 cell.getCellTypeEnum() 

Además de comparar el tipo de celda, debe usar CellType de la siguiente manera:

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

Puede consultar la documentación. Es bastante útil: –

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

De la documentación :

int getCellType() . POI 3.15. CellType una enumeración CellType en el futuro.

Devuelve el tipo de celda. CellType en la versión 4.0 de POI. Para la compatibilidad con versiones posteriores, no codifique las literales de tipo de celda en su código.

FileInputStream fis = new FileInputStream (nuevo archivo (“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(); } 

Este código funcionará bien. Use getCellTypeEnum () y para comparar use solo NUMERIC o STRING.

Parece que 3.15 no ofrece ninguna solución satisfactoria: cualquiera usa el estilo anterior con Cell.CELL_TYPE_ *, o usamos el método getCellTypeEnum () que está marcado como obsoleto. Una gran cantidad de disturbios por poco agregar valor …

Use getCellTypeEnum ()

 switch (cell.getCellTypeEnum()) { case BOOLEAN : //To-do break; case NUMERIC: //To-do break; case STRING: //To-do break; }