Problema ao ler campo numérico de arquivo XLS

Salve pessoal.

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:

O que me sugerem para solucionar?

PS: O retorno do campo numérico é Double.

vlws :wink:

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 :cry:

Existe alguma forma melhor de ler este tipo de formato XLS?

vlw :slight_smile:

Certo, então é um código de barras. Quantos dígitos tem? São 12 (UPC) ou 13 (EAN) dígitos.

Digamos que você precise uniformizar para 12 dígitos. Então use String.format ("%012d", (long) seu número);

String s = String.format ("%012d", cel.getNumericCellValue());