Excel criado com Apache POI tem ponto como separador decimal para valores acima de 1000 e vírgula para menor

votos
1

Eu conheci algum problema com a geração de arquivos do Excel usando org.apache.poi.ss.usermodel utils: (.) Os valores acima de 1000 têm ponto como separador e valores abaixo de 1000 decimal tem vírgula (,) como separador decimal.

Eu tentando um monte de maneiras diferentes colocar valores BigDecimal em 'celular', mas cada vez que o resultado é o mesmo, independentemente da configuração de tipo de célula em CELL_TYPE_NUMERICou CELL_TYPE_STRINGou fazer algo parecido com isto:

CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat(###0,00));
cell.setCellStyle(cellStyle);

I conseguiu se livrar deste problema, unificando o separador decimal - Estou tomando um valor de cadeia deste BigDecimal, substituindo todos os pontos em vírgulas e feito! Mas ao abrir Excel todos os campos são marcados e há um aviso que diz que o valor nesta célula é formatado como um texto. Posso configurar-lo como um número e, em seguida, fazer operações matemáticas diferentes sobre eles. Mas eu gostaria de se gerado arquivo Excel sem alertas para resolver (e, portanto, - células configuradas como números para fazer operações matemáticas sobre eles), com BigDecimalvalores com vírgula como separador decimal.

Eu crio minha folha e células da seguinte forma:

Workbook workbook = new SXSSFWorkbook();
Sheet sheet = workbook.createSheet(mySheet);
int rowNum = 1;
List<MyRecord> records = (...);

for (MyRecord record : records) {
    Row row = sheet.createRow(rowNum++);
    int cellNum = 0;
     for (String attribute : attributeList) {
         String cellData = cellData(record, attribute);
         if(cellData != null) {
            Cell cell = row.createCell(cellNum);
            cell.setCellValue(cellData);
        }
        cellNum++;
        }
}
Publicado 19/09/2018 em 13:34
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more