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

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

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

но это не работает для меня. где я делаю ошибку.


person Lalit Chattar    schedule 18.03.2012    source источник
comment
простите, а что такое кс?   -  person Leo    schedule 18.04.2014
comment
@Leo Это XSFCellStyle   -  person stg    schedule 03.11.2014


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

person Gagravarr    schedule 18.03.2012
comment
Вы должны использовать org.apache.poi.ss.util.DateFormatConverter, чтобы преобразовать средство форматирования в стиле Java в средство форматирования в стиле Excel, вызвав DateFormatConverter.convert(Locale.getDefault(), d-MMM-yy): poi.apache.org/apidocs/dev/org/apache/ poi/ss/util/ - person gouessej; 15.01.2019