Python xlrd将DateTime读作序列号

时间:2015-08-04 14:12:42

标签: python excel datetime xlrd

我有一个excel,它是一个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') 

我用Python翻译成air_date的{​​{1}}因为格式不同而爆炸。

这是excel的例子。

enter image description here

这是我得到的错误

  

builtins.ValueError ValueError:时间数据'42219.0:06:00 AM'没有   匹配格式'%m /%d /%Y:%I:%M%p'

1 个答案:

答案 0 :(得分:1)

您似乎需要使用xldate_as_tuple将excel格式转换为python格式(请参阅documentationthis already existing question,您可以在其中找到将日期转换为python的格式。 / p>

  

xldate_as_tuple:

     

将Excel编号(假定代表日期,日期时间或时间)转换为适合于提供给datetime或mx.DateTime构造函数的元组。