В Excel даты и время сохраняются как числа с плавающей запятой, как количество дней с полуночи 01/01/1900 .
Если вы будете хранитьнекоторое значение меньше 1.0
- оно будет интерпретироваться как время, иначе как дата, например:
0.5
будет равно 12:00:00
5.5
будет равен 05.01.1900 12:00:00
Чтобы правильно обрабатывать даты и время, используйте org.apache.poi.ss.usermodel.DateUtil
, например, ваш пример может выглядеть примерно так:
double time = DateUtil.convertTime("19:30:00");
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(
workbook.createDataFormat().getFormat("HH:MM AM/PM"));
cell.setCellValue(time);
cell.setCellStyle(cellStyle);
И результат Excel будет выглядеть так:
Предположим, вопрос был о вещах, описанных выше, реальное значение даты / времени в Excel должен быть двойным, а значение представления должно основываться на заданном вами стиле / шаблоне;Предположим, что целью было достижение подобного рода сходства, то есть 19:30:00
в формуле и 07:30 PM
в ячейке.
Если нет, и целью было получить 07:30 PM
в обоих случаях - тогда вы будетепросто нужно хранить строковое значение, а не дату / время.