2014-09-24 13 views
6

कनवर्ट करें मुझे निम्नलिखित कोड के साथ एक्सेल xldate से पायथन डेटाटाइम में कनवर्ट करने में समस्या है। क्या यह बदलने का सही तरीका है?xldate से python datetime

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' 
+0

क्या यह '[0] .value' नहीं होना चाहिए? – jonrsharpe

+0

ValueError: – twfx

+0

अनपैक करने के लिए बहुत सारे मान प्रश्न में उत्तर न दें; यदि आप इस दौरान इसे समझते हैं तो आप अपने प्रश्न का उत्तर दे सकते हैं। – jonrsharpe

उत्तर

17

a[0] एक xlrd.Cell ताकि आप को a[0].value उपयोग करने की आवश्यकता है, सेल सह का उपयोग करें 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)) 
8

@ जोनशर्प के स्वीकृत उत्तर अच्छी तरह से काम करता है। लेकिन यह क्लीनर है:

py_date = xlrd.xldate.xldate_as_datetime(a[0].value, book.datemode)