แปลง xldate เป็น python datetime

ฉันมีปัญหาในการแปลง excel 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)

a ถูกพิมพ์ -->

   [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'

person twfx    schedule 24.09.2014    source แหล่งที่มา
comment
นั่นควรจะเป็น a[0].value ไม่ใช่เหรอ?   -  person jonrsharpe    schedule 24.09.2014
comment
ValueError: มีค่ามากเกินไปที่จะแยกออก   -  person twfx    schedule 24.09.2014
comment
อย่าออกคำตอบในคำถาม คุณสามารถตอบคำถามของคุณเองได้หากคุณเข้าใจในระหว่างนี้   -  person jonrsharpe    schedule 24.09.2014


คำตอบ (2)


a[0] คือ xlrd.Cell ดังนั้นคุณต้องใช้ a[0].value เพื่อเข้าถึง เนื้อหาของเซลล์

นอกจากนี้ คุณไม่สามารถแตกไฟล์เป็น year, month, day, hour, minute ได้เนื่องจากมีค่ามากกว่าห้าค่าในทูเพิลที่สร้างขึ้น (แล้ว second ล่ะ) อย่างไรก็ตาม คุณสามารถหลีกเลี่ยงได้โดยใช้การคลายไฟล์ทูเพิล (ดูเช่น ** (ดาวคู่) และ * (ดาว) ทำอะไรกับพารามิเตอร์) แทนที่จะเป็นตัวแปรชั่วคราว:

py_date = datetime.datetime(*xlrd.xldate_as_tuple(a[0].value,
                                                  book.datemode))
person jonrsharpe    schedule 24.09.2014

คำตอบที่ยอมรับของ @ jonrsharpe ใช้งานได้ดี แต่นี่สะอาดกว่า:

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