Ответ 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 - в нижнем регистре (см. Выше)