Cóż, nieważne, znalazłem rozwiązanie i oto jest!
try:
cell = worksheet.cell(row - 1, i)
if cell.ctype == xlrd.XL_CELL_DATE:
date = datetime.datetime(1899, 12, 30)
get_ = datetime.timedelta(int(worksheet.cell_value(row - 1, i)))
get_col2 = str(date + get_)[:10]
d = datetime.datetime.strptime(get_col2, '%Y-%m-%d')
get_col = d.strftime('%d-%m-%Y')
else:
get_col = unicode(int(worksheet.cell_value(row - 1, i)))
except:
get_col = unicode(worksheet.cell_value(row - 1, i))
Trochę wyjaśnienia: okazuje się, że z xlrd rzeczywiście można sprawdzić typ komórki i sprawdzić, czy jest to data, czy nie. Ponadto, wydaje się, że program Excel ma dziwny sposób na zaoszczędzenie dziennych godzin. Zapisuje je jako pływające (lewa część przez kilka dni, prawa część przez wiele godzin), a następnie zajmuje określoną datę (1899, 12, 30, wydaje się działać poprawnie) i dodaje dni i godziny z pływaka, aby utworzyć datę. Tak więc, aby utworzyć datę, którą chciałem, dodałem je i zachowałem tylko 10 pierwszych liter ([: 10]), aby pozbyć się godzin (00.00.00 lub coś takiego ...). Zmieniłem także kolejność dni_miesięcy-lat, ponieważ w Grecji używamy innego zamówienia. Na koniec ten kod sprawdza również, czy można przekonwertować liczbę na liczbę całkowitą (nie chcę, aby pokazywano w moim programie ...) i jeśli wszystko zawiedzie, po prostu używa komórki takiej, jaka jest (w ciągi w komórkach ...). Mam nadzieję, że okaże się, że przydatne, myślę, że są inne wątki, które mówią, że jest to niemożliwe lub coś ...
Nie powinieneś oczekiwać, że Excel rozróżnia daty i liczby, jeśli nie możesz. – pnuts