Próbuję odczytać dane z plików .xlsx przy użyciu SharpZipLib, aby rozpakować je (w pamięci) i odczytać wewnętrzne pliki xml. Wszystko jest w porządku, ale rozpoznaje daty - są przechowywane w formacie julean i muszę jakoś rozpoznać, czy liczba jest datą czy tylko liczbą. W innym temacie (niestety umarł i potrzebuję szybkiej odpowiedzi) poznałem pewne rzeczy od Marka Baker'a, ale to wciąż za mało ...Daty odczytu z plików Excel OpenXML
"W Excelu daty są wartością zmiennoprzecinkową ... liczba całkowita część jest liczbą dni od 1/1/1900 (lub 1/1/1904 w zależności od tego, który kalendarz jest używany), część ułamkowa stanowiąca część dnia (tj. część czasu) ... stała się nieco bardziej niezręczna przez fakt, że rok 1900 jest uważany za rok przestępny
Jedyną rzeczą odróżniającą dane od liczby jest maska formatu liczbowego. Jeśli możesz odczytać maskę formatu, możesz jej użyć do określenia wartości jako daty zamiast liczby ... następnie obliczyć wartość daty/formatowanie od daty bazowej. "
„Ale nie ma atrybutu«S»dla dat zawsze ma wartość«1»Wiem, że to określa styl, ale być może;?)”
S atrybut odwołuje się styl wpisu xf w styles.xml i nie zawsze będzie to data 1 dla dat ... wszystko zależy od tego, ile różnych stylów jest używanych w skoroszycie. Styl xf z kolei odwołuje się do maski formatu liczb. Aby zidentyfikować komórkę zawierającą datę, należy wykonać styl xf -> wyszukiwanie formatu liczbowego, a następnie określić, czy ta maska liczbowa ma format liczbowy daty/czasu (a nie na przykład wartość procentowa lub maska z liczbowym numerem rozliczenia)
"jeszcze jedno pytanie - mam teraz patrząc na treści style.xml iw sekcji widzę elementy, takie jak:" < xf numFmtId = "14" ... applyNumberFormat = "1"/>” "< xf numFmtId =" 1 "... applyNumberFormat =" 1 "/ >", itp. Ale nie ma sekcji <numFmts> ... Czy są jakieś "standardowe" formaty? Czy po prostu coś mi brakuje? "
Czy ktoś może mi pomóc? Z góry dziękuję.
Oto lista formatów danych o identyfikatorach http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.NumberingFormat(v=office.14).aspx –
możliwy duplikat [Co oznacza Komórka Office Open XML zawiera wartość daty/czasu?] (Http://stackoverflow.com/questions/4730152/what-indicates-an-office-open-xml-cell-contains-a-date-time-value) – MikeTeeVee