Как я могу применить стиль форматирования даты к одному столбцу в Excel с POI-3.2-FINAL? - PullRequest
0 голосов
/ 25 марта 2010

Мне нужно создать файл Excel с POI-3.2-Final (невозможно обновить до 3.5+, из-за проблем с ретро-совместимостью), и для каждой строки мне нужно отформатировать дату в столбце A.

Основываясь на названиях методов, я подумал, что способ сделать это:

short dateFormat = workbook.createDataFormat().getFormat("dd/MM/yyyy HH:mm");
...
cell = row.createCell(0);
cell.setCellValue(new Date());
cell.getCellStyle().setDataFormat(dateFormat);

но, что забавно, на самом деле этот стиль применяется ко ВСЕМ клеткам.

Итак, имея в виду, что я не могу переключить API (без обновления, без CSV, без jexcel), есть ли способ достичь того, чего я хочу?

Спасибо

1 Ответ

1 голос
/ 25 марта 2010

Ваша проблема в том, что вы меняете стиль ячейки по умолчанию!
cell.getCellStyle() дает вам стиль, который в настоящее время установлен для этой ячейки, который обычно является стилем по умолчанию, если вы еще не изменили его.
Для того, чтобы эта работа работала так, как вы ожидаете, вам нужно создать новый объект CellStyle из вашего dateFormat и установить его в ячейку следующим образом:

dateStyle = workbook.createCellStyle();
...
dateStyle.setDataFormat(dateFormat);
cell.setCellStyle(dateStyle);

Также убедитесь, что вы создали этот объект стиля только один раз и повторно используете его для всех ячеек, для которых вы хотите использовать этот стиль.

...