Excel opprettet med Apache POI har prikk som desimaltegn for verdier over 1000 og komma for mindre

stemmer
1

Jeg har møtt noen problem med å generere Excel-filer ved hjelp av org.apache.poi.ss.usermodel utils: (.) Verdier over 1000 har punktum som desimalskilletegn og verdier under 1000 har komma (,) som desimaltegn.

Jeg har prøvd mange forskjellige måter å sette BigDecimal verdier i 'Cell', men hver gang resultatet er det samme, uavhengig av å sette opp celletype på CELL_TYPE_NUMERICeller CELL_TYPE_STRINGeller gjøre noe som dette:

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

Jeg klarte å bli kvitt dette problemet ved å forene desimalseparatoren - Jeg tar en String verdien av denne BigDecimal, erstatte alle prikker inn komma og gjort! Men når du åpner Excel alle felt er merket opp, og det er en advarsel som sier at verdien i denne cellen er formatert som en tekst. Jeg kan sette opp det som et tall, og deretter gjøre diferent matematiske operasjoner på dem. Men jeg vil gjerne bli generert Excel-fil med ingen advarsler for å løse (og dermed - celler satt opp som tall for å gjøre matematiske operasjoner på dem), med BigDecimalverdier med komma som desimaltegn.

Jeg oppretter min ark og celler som følger:

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++;
        }
}
Publisert på 19/09/2018 klokken 13:34
kilden bruker
På andre språk...                            

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