xlrd 读取excel日期类型 作者:马育民 • 2021-08-30 08:22 • 阅读:10432 # 问题 直接从 excel 读取日期类型,是一个数字,如下: [![](https://www.malaoshi.top/upload/pic/python/QQ20210830082546.png)](https://www.malaoshi.top/upload/pic/python/QQ20210830082546.png) 读取结果:`44377.0`,是一个数字 # 解决 ### xldate_as_tuple ``` xlrd.xldate_as_tuple(xldate,datemode) ``` **参数:** - xldate: 要处理的单元格值 - datemode:时间基准 - 0:代表1900-01-01为基准,常使用1900为基准 - 1:代表1904-01-01为基准 **返回值**:返回一个元组,类似于`(year,month,day,hour,minute,nearest_second)` **注意:** 仅适用于date类型的excel单元格,不适用于time类型的单元格,对于time类型的单元格值,报错:XLDateAmbiguous ### xldate_as_datetime ``` xlrd.xldate.xldate_as_datetime(xldate,datemode) ``` **参数:** - xldate: 要处理的单元格值 - datemode:时间基准 - 0:代表1900-01-01为基准,常使用1900为基准 - 1:代表1904-01-01为基准 **返回值:** `datetime`对象,格式 `year-month-day hour:minute:second` **注意:** 对于 `time` 类型的单元格值,转化后自动以基准补充;如基准选择 1900 时,时间 13:09:30 转化后为:1900-01-01 23:08:00 # 例子 ``` import xlrd from xlrd import xldate_as_tuple excel=xlrd.open_workbook(r'./duochangjia-jun.xls') sheet=excel.sheet_by_index(0) cols=sheet.col_values(10) row=sheet.row_values(1,1,13) print(row[10]) print("关键==========================") date_t = xldate_as_tuple(row[10], 0) print(date_t) date_t=date_t[:3] date_str="/".join( [str(item) for item in date_t] ) print("结果:"+date_str) ``` 原文出处:http://malaoshi.top/show_1IX1ljbh7wBB.html