Даты чтения из файлов OpenXml Excel

Я пытаюсь прочитать данные из файлов .xlsx, используя SharpZipLib, чтобы распаковать их (в памяти) и прочитать внутренние файлы xml. Все в порядке, но распознавание дат - они хранятся в формате julean, и мне нужно как-то распознать, является ли число датой или только числом. В другой теме (к сожалению, она умерла, и мне нужен быстрый ответ) я кое-что узнал от Марка Бейкера, но этого все еще недостаточно ...

«Excel хранит даты в виде числа с плавающей запятой ... целая часть является количество дней, прошедших с 01.01.1900 (или 01.01.1904, в зависимости от того, какой календарь используется), дробная часть представляет собой долю дня (т.е. временную часть) ... что немного затруднительно из-за того, что 1900 год считается високосным.

Единственное, что отличает данные от числа, - это маска формата числа. Если вы можете прочитать маску формата, вы можете использовать ее, чтобы идентифицировать значение как дату, а не число ... затем вычислить значение / форматирование даты от базовой даты. "

" Но не атрибут " s "для дат всегда имеет значение" 1 "? Я знаю, что это определяет стиль, но может быть? ;) "

Атрибут s ссылается на запись стиля xf в файле styles.xml, и это не всегда будет записью 1 для дат ... все зависит от того, сколько разных стилей используется в книге. Стиль xf в свою очередь, ссылается на маску числового формата. Чтобы определить ячейку, содержащую дату, вам необходимо выполнить поиск в стиле xf -> числовой формат, а затем определить, является ли эта маска числового формата маской числового формата даты / времени (а не, например, процентная или учетная маска формата числа)

«Еще один вопрос - я» m теперь просматриваю содержимое style.xml, и в разделе я вижу такие элементы, как: "", " "и т.д. но нет раздела ... Есть ли" стандартные "форматы? Или мне просто что-то не хватает? "

Может кто-нибудь мне помочь? Заранее спасибо.

9
задан brovar 11 January 2011 в 08:24
поделиться