Я никогда не читал Date раньше, но я думаю, вам нужно сравнить индекс стиля в ячейке, которую вы читаете, с индексом стиля даты в элементе x:numFmts
, который вы найдете в x:cellStyle
.Я знаю, что в Office 2010 есть индикатор типа данных даты в ячейке, где <x:c t='d'>
, поэтому, если вы используете эту версию, было бы намного легче найти, являются ли данные датой или нет.Вот как это будет выглядеть в Office 2010:
<x:c r="C4" t="d">
<x:v>1976-11-22T08:30Z</x:v>
</x:c>
Чтобы преобразовать данные в DateTime, я считаю, что все, что вам нужно сделать, - это DateTime.FromOADate(cellvalue)
, где cellValue - двойное число.Я знаю, что мы конвертируем DateTime в OADate перед вставкой дат в наши документы Excel, поэтому я думаю, что использование метода FromOADate будет работать нормально.
Что касается API, выполняющего эти функции, я не знаюлюбой, который будет выполнять то, что вы хотите, но я бы хотел, чтобы он был включен в будущие версии SDK.