Esto es prácticamente idéntico a una serie de otras preguntas aquí, como devolver decimal en lugar de cadena (jar POI)
La respuesta es la misma que uno que di aquí :
POI le está dando el valor exacto que Excel ha almacenado en el archivo. Generalmente, si escribe un número en una celda de Excel, Excel lo almacenará como un número con formato. POI brinda soporte para hacer ese formato por usted si lo desea (la mayoría de las personas no lo hacen; quieren los números como números para poder usarlos)
La clase que está buscando es DataFormatter . Su código sería algo como
DataFormatter fmt = new DataFormatter();
for (Row r : sheet) {
for (Cell c : r) {
CellReference cr = new CellRefence(c);
System.out.println("Cell " + cr.formatAsString() + " is " +
fmt.formatCellValue(c) );
}
}