Я не вижу встроенного способа сделать это легко в POI. Во-первых, кажется, что нет четкого различия между «временем», «датой» и «датой-временем». Значения просто сохраняются в виде чисел, и для их отображения применяется формат.
Одна вещь, которую вы могли бы сделать, это получить стиль ячейки (HSSFCellStyle
), а затем написать свой собственный метод, который читает либо style.getDataFormatString()
, либо style.getDataFormat()
и сообщает вам, попадает ли формат в "Время", " Дата "или" Дата / время "в зависимости от того, как вы их определяете. Второй метод возвращает int
, поэтому с ним может быть проще работать.
Например, выделенный ниже формат имеет строковый формат данных «[$ -F400] ч: мм: сс \ AM / PM» и значение int
166.
Я предполагаю, что это то, что вы подразумеваете под форматом «Дата / время», поскольку это один из встроенных форматов Excel, который отображает как дату, так и время.
Недостатком этого подхода является то, что я не ожидал, что он будет работать с ячейками, которые имеют пользовательские форматы даты / времени.