Я столкнулся с некоторой проблемой при создании файлов Excel с использованием org.apache.poi.ss.usermodel utils
: значения выше 1000 имеют точку (.) В качестве десятичного разделителя, а значения ниже 1000 имеют запятую (,) в качестве десятичного разделителя.
Я пытался разными способами поместить значения BigDecimal в 'Cell', но каждый раз результат один и тот же, независимо от установки типа ячейки на CELL_TYPE_NUMERIC
или CELL_TYPE_STRING
или выполнения чего-то подобного:
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("###0,00"));
cell.setCellStyle(cellStyle);
Мне удалось избавиться от этой проблемы, объединив десятичный разделитель - я беру строковое значение этого BigDecimal, заменяя все точки на запятые и готово!Но при открытии Excel все поля размечаются, и появляется предупреждение о том, что значение в этой ячейке отформатировано как текст.Я могу установить его как число, а затем выполнять различные математические операции над ними.Но я хотел бы получить сгенерированный файл Excel без предупреждений для разрешения (и, следовательно, ячеек, настроенных как числа для выполнения математических операций над ними), со значениями BigDecimal
с запятой в качестве десятичного разделителя.
Я создаю свой лист и ячейки следующим образом:
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++;
}
}