Estoy leyendo archivo de Excel a fondo y tengo una condición como si columnType
es "fecha" a continuación, establezca getCellDateValue
de otra manera utilizar formatter
y formatCellValue
:
String valueOfColumn = StringUtils.equalsIgnoreCase(excelData.getColumnType(), "date")
? format(cell.getDateCellValue(), "dd/MM/yyyy")
: formatter.formatCellValue(cell);
excelData.setColumnValue(valueOfColumn );
Está funcionando bien para toda la columna de si se trata de tener valor o no, pero si la columna de la fecha es nulo, está lanzando NullPointerException
.
¿Por qué se lanzaba esta excepción y cómo me deshago de ella?
Es allí en la documentación de Apache POI sí que el método getDateCellValue()
que está llamando retornos null
para cells.So en blanco, probablemente el format()
método debe ser lanzando excepción de puntero nulo debido a esto. Cada vez que el código se encuentra con un valor de celda vacía cuando el tipo de columna es 'fecha', se devuelve un valor nulo que los format()
intentos método de formato y lanza una excepción.
java.util.Date getDateCellValue ()
Obtener el valor de la celda como una fecha.
Para las cadenas que tiramos una excepción. Para las celdas en blanco volvemos un nulo.
Devuelve: el valor de la celda como una fecha
Así que en resumen, es necesario agregar un cheque nulo en el código para manejar este caso.
String valueOfColumn;
if(cell != null ) {
if(StringUtils.equalsIgnoreCase(excelData.getColumnType(), "date") && cell.getDateCellValue() != null) {
valueOfColumn = format(cell.getDateCellValue(), "dd/MM/yyyy");
} else {
valueOfColumn = formatter.formatCellValue(cell)
}
excelData.setColumnValue(valueOfColumn );
}
else {
// handle else case for cell being null
}