xlrd单元格的原始值

我正在使用xlrd读取xls文件。 问题是,当xlrd读取这样的值“12/09/2012” ,我得到这样的结果“xldate:41252.0” 。 当我使用xlrd.xldate_as_tuple时 ,我得到这个结果:

(2016年,12年,10年,0年,0年)

我的代码:

curr_row = -1 while curr_row < num_rows: curr_row += 1 row = worksheet.row(curr_row) for x in xrange(num_cols): field_type = worksheet.cell_type(curr_row, x) if field_type == 3: # this is date field_value = worksheet.cell_value(curr_row, x) print worksheet.cell(curr_row, x).value print xlrd.xldate_as_tuple(field_value, 1) 

结果:

 41252.0 (2016, 12, 10, 0, 0, 0) 

两个结果都是错的。 我怎样才能得到原始的单元格值“12/09/2012”使用xlrd?

根据文档string ,您应该将工作簿的datexldate_as_tuple作为第二个parameter passing给xldate_as_tuple

 from datetime import datetime import xlrd book = xlrd.open_workbook("test.xls") sheet = book.sheet_by_index(0) a1 = sheet.cell_value(rowx=0, colx=0) print a1 # prints 41252.0 print xlrd.xldate_as_tuple(a1, 1) # prints (2016, 12, 10, 0, 0, 0) a1_tuple = xlrd.xldate_as_tuple(a1, book.datemode) print a1_tuple # prints (2012, 12, 9, 0, 0, 0) a1_datetime = datetime(*a1_tuple) print a1_datetime.strftime("%m/%d/%Y") # prints 12/09/2012