заполнение поля в Excel с использованием Java HSSF POI - Excel неправильно сортирует поле даты - PullRequest
1 голос
/ 06 мая 2011

Итак, я заполняю документ Excel с помощью HSSF POI Java и использую шаблон Excel, в который уже введены некоторые заголовки, например ...

HSSFWorkbook workbook = readFile(TEMPLATE_LOCATION);

И моя проблема в том, что когда я заполняю один из столбцов данными в формате даты ММ / дд / гггг, примерно так ...

row.createCell((short)column++).setCellValue(Tools.dateToString(rfq.getCreationDate()));

Он соответствующим образом заполняет столбец данными типа .... 01/01/2011 05/04/2010 03/03/2009

Ошибка в том, что когда я выполняю сортировку по этому столбцу (в Excel), используя, скажем, автофильтр-> сортировка по возрастанию, тогда он возвращает даты в неправильном порядке, как это .... * * 01 1010/01/2011

03/03/2009

05/04/2010

(поскольку он читает это как строку и сортирует вместо сортировки по дате)

Я попытался установить столбец как «числовой» столбец, а затем отсортировать все еще без кубиков ....

        cell = row.createCell((short)column++);
        cell.setCellStyle(workbook.createCellStyle());
        cell.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        cell.setCellType(cell.CELL_TYPE_NUMERIC);
        cell.setCellValue(Tools.dateToString(rfq.getCreationDate()));

Также форматирование тоже не помогло ...

SimpleDateFormat formatter = new SimpleDateFormat("M/d/yyyy");
row.createCell((short)column++).setCellValue(formatter.format(order.getCreationDate()));

Это все происходит в Excel 2003. Не знаю, как решить.

1 Ответ

2 голосов
/ 07 мая 2011

Ваша проблема в том, что вы преобразуете данные в строки при заполнении ячеек

row.createCell((short)column++).setCellValue(Tools.dateToString(rfq.getCreationDate()));

Я не пользователь java, поэтому не уверен, но вы можете попробовать просто

row.createCell((short)column++).setCellValue(rfq.getCreationDate());

Если базовые данные в форме, которую Excel распознает как дату, все должно быть в порядке.

...