Java Apache POI Excel - Celula com valor Numérico e Double com Locale pt-BR

1

Olá!

Estou fazendo uma planilha Excel em Java, que tem valores numéricos (double) a serem mostrados. Preciso que o CellType seja Numeric, mas o único jeito que consigo mostrar o valor corretamente configurado, é com o CellType como Geral ou Texto.

O número vem do banco de dados já formatado corretamente (Ex: 412.000). Aí, eu capturo ele como double e este double formata o número com , (412,000)

Eu já tentei: NumberFormat, DecimalFormat, Locale, String.format, etc, e embora o CellType esteja setado como Numeric, quando gera a planilha, o tipo da célula ou é Geral ou Texto.

O que estou fazendo atualmente é:

XSSFCell cell = row.createCell(numeroCelula);
double value = 412.000; //Valor vindo do banco, mas o double troca para 412,000
cell.setCellType(CellType.NUMERIC);
cell.setCellValue(String.format("%.3f", value).replace(",", ".")); // valor em String, trocando , por . pra ficar correto.

Então, como eu consigo colocar o valor no nosso Locale (formatando os milhares com . ao invés de ,) e setar o CellType como Numeric?

Desde já, muito obrigado!

Se você chama o setCellValue passando um objeto String ele muda o celltype pra Texto.
Passa diretamente sua variável double.

Opa, obrigado pela resposta.
Mas quando eu passo o valor double, aí ele não vem formatado pro nosso Locale. Ele volta ao padrão americano… ex: 412,000 … Se eu uso um parseDouble() com o número formatado, dá exception…

Sim, mas pra isso você precisa setar um CellStyle e nesse CellStyle você configura a formatação da célula.