Isso é praticamente idêntico a várias outras perguntas aqui, como retornando decimal em vez de string (POI jar)
A resposta é a mesma do um que dei aqui :
POI está fornecendo o valor exato que o Excel armazenou no arquivo. Geralmente, se você escrever um número em uma célula do Excel, o Excel armazenará isso como um número com formatação. POI fornece suporte para fazer essa formatação para você, se você quiser (a maioria das pessoas não - eles querem os números como números para que possam usá-los)
A classe que você está procurando é DataFormatter . Seu código seria 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) );
}
}