2015-08-04 2 views
2

У меня есть excel, формат DateTime. Но когда я читаю лист, он читается как серийный номер.Python xlrd read DateTime как серийный номер

Например, в листе это 08/03/2015, но xlrd читается как 42219.

Код довольно прост

workbook = xlrd.open_workbook(file_contents=excel_contents) 
the_sheet = workbook.sheet_names()[0] 
number_of_rows = the_sheet.nrows - 1 
curr_row = 0 
data = [] 

while curr_row < number_of_rows: 
    curr_row += 1 
    air_date = the_sheet.cell_value(curr_row, 1) 
    air_time = the_sheet.cell_value(curr_row, 2) 
    schedule_time = '{}:{}'.format(air_date, air_time) 
    unaware = datetime.strptime(schedule_time, '%m/%d/%Y:%I:%M %p') 

air_date, который я использую, чтобы перевести datetime в Python бомбы, потому что формат отличается.

Это пример excel.

enter image description here

А вот ошибка я получил

builtins.ValueError ValueError: time data '42219.0:06:00 AM' does not match format '%m/%d/%Y:%I:%M %p'

ответ

1

Кажется, вам нужно использовать xldate_as_tuple для преобразования формата первенствовать в формате питона (см documentation и this already existing question где вы найдете формат для конвертировать дату в питон.

xldate_as_tuple :

Convert an Excel number (presumed to represent a date, a datetime or a time) into a tuple suitable for feeding to datetime or mx.DateTime constructors.