Estou tendo problemas ao ler um campo do tipo numérico como String, utilizando a api POI da Apache.
O problema em si ocorre neste treço do código, quando leio um código de barras de um campo numérico.
// Verifica o tipo do valor da celula
switch (cel.getCellType()) {
case HSSFCell.CELL_TYPE_FORMULA:
linha.add(cel.getCellFormula());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
linha.add(String.valueOf(cel.getNumericCellValue()));
break;
case HSSFCell.CELL_TYPE_STRING:
linha.add(cel.getStringCellValue());
break;
default:
}
A saída dada é mais ou menos esta: 7.896004726946E12 com o E ao final… :oops:
Uai, como o número é grande, vai mostrar em notação científica mesmo (que tem esse E no meio).
Você nunca ouviu falar de notação científica?
Em vez de usar String.valueOf, use alguma coisa que formate o número do jeito que você precisa, como java.text.DecimalFormat.
Mas tem uma coisa esquisita - por que é que o número é tão grande assim? É um CPF? Um CNPJ? Um código qualquer?
O problema é que na planilha o “fulano” insere o código de barras pelo Excel em um campo numérico.
Logo a api da Apache subentende que o campo é numérico e retorna um Double.
Já tentei ler o valor da célula como String mas infelizmente me dá um exception
Existe alguma forma melhor de ler este tipo de formato XLS?