Формат даты Apache poi

Привет, я читаю csv файл и получаю дату в 01-01-2011, но я хочу его в формате 01-янв-2011, когда пишу файл .xlsx с помощью библиотеки apache poi. мой код

XSSFDataFormat df = workBook.createDataFormat();
cs.setDataFormat(df.getFormat("dd-MMM-yy"));

но он не работает для меня. где я ошибаюсь.

Ответы

Ответ 1

Вам не только нужно создать формат ячейки, но также нужно применить его к ячейке!

XSSFDataFormat df = workBook.createDataFormat();
cs.setDataFormat(df.getFormat("d-mmm-yy"));

// Get / Create our cell
XSSFRow row = sheet.createRow(2);
XSSFCell cell = row.createCell(3);

// Set it to be a date
Calendar c = Calendar.getInstance();
c.set(2012,3-1,18); // Don't forget months are 0 based on Calendar
cell.setCellValue( c.getTime() );

// Style it as a date
cell.setCellStyle(cs);

Во-вторых, вам нужно знать, что Java и Excel немного отличаются тем, как они выражают правила форматирования даты. Вы должны открыть копию Excel, отформатировать ячейку образца, как вы хотите, а затем принять к сведению необходимые правила форматирования. В вашем случае вы пошли бы за верхний регистр Java в стиле Java, а в Excel - в нижнем регистре (см. Выше)