将xldate转换为python日期时间
问题描述:
我有一个问题,使用下面的代码将excel xldate转换为python datetime。这是转换的正确方法吗?将xldate转换为python日期时间
import xlrd
from datetime import datetime
book = xlrd.open_workbook("a.xls")
sh = book.sheet_by_index(0)
for rx in range(1,sh.nrows):
a = sh.row(rx)
print a
year, month, day, hour, minute = xlrd.xldate_as_tuple(a[0], book.datemode)
py_date = datetime.datetime(year, month, day, hour, minute)
一个印 - >
[xldate:40544.0, number:0.0, number:75.49847785316135, number:75.6401124106301]
示
year, month, day, hour, minute = xlrd.xldate_as_tuple(a[0], book.datemode)
File "C:\Anaconda\Lib\site-packages\xlrd\xldate.py", line 67, in xldate_as_tuple
xldays = int(xldate)
TypeError: int() argument must be a string or a number, not 'Cell'
答
a[0]
下面的错误是xlrd.Cell
,所以需要使用a[0].value
到访问cell co ntent。
而且,你不能解压缩到year, month, day, hour, minute
因为在生产的元组五个以上的值(怎么样second
?)但是,你能避免通过使用元组拆包(见例如What does ** (double star) and * (star) do for parameters?),而不是临时变量:
py_date = datetime.datetime(*xlrd.xldate_as_tuple(a[0].value,
book.datemode))
答
@ jonrsharpe接受的答案效果很好。但这是更清洁的:
py_date = xlrd.xldate.xldate_as_datetime(a[0].value, book.datemode)
不应该是'a [0] .value'吗? – jonrsharpe 2014-09-24 07:05:01
ValueError:解包的值太多 – twfx 2014-09-24 07:08:06
不要在问题中输出答案;如果你在此期间弄明白的话,你可以回答你自己的问题。 – jonrsharpe 2014-09-24 07:18:40