python 处理Excel 常见问题-读取Excel中时间

来源:互联网 发布:壁纸桌面软件下载 编辑:程序博客网 时间:2024/06/07 05:09
Excel 时间读取
当本地Excel存有一个时间列时,使用下面代码读取Excel
import xlrdbook = xlrd.open_workbook('demo.xls')sheet = book.sheet_by_name('Sheet1')for row in range(sheet.nrows):print(sheet.row_values(row))# 输出:# ['时间']# [43025.0]

通过输出,可以看到 Excel 中的时间 ‘2017/10/17’,输出为一个数字,很明显这和我们需要的时间类型有出入。
那我们需要如何处理呢?

1.首先我们需要判断Excel单元格中的数据类型
for row in range(sheet.nrows):    for col in range(sheet.ncols):        print(sheet.cell(row,col))        print('type',sheet.cell(row,col).ctype)# 输出:# text:'时间'# type 1# xldate:43025.0# type 3
通过上面的代码可以知道时间类型的ctype值为3

2.通过 xldate_as_tuple 方法,将读取的Excel值转换为 tuple,再通过datetime转换为转为时间类型
import datetimefor row in range(sheet.nrows):    for col in range(sheet.ncols):        if sheet.cell(row,col).ctype == 3:            date = xldate_as_tuple(sheet.cell(row,col).value,0)            print(date)            print(datetime.datetime(*date))#输出:# (2017, 10, 17, 0, 0, 0)# 2017-10-17 00:00:00

完整代码:
import xlrdfrom xlrd import xldate_as_tupleimport datetimebook = xlrd.open_workbook('demo.xls')sheet = book.sheet_by_name('Sheet1')for row in range(sheet.nrows):    for col in range(sheet.ncols):        value = sheet.cell(row,col).value        if sheet.cell(row,col).ctype == 3:            date = xldate_as_tuple(sheet.cell(row,col).value,0)            value = datetime.datetime(*date)        print(value)# 输出:# 时间# 2017-10-17 00:00:00



原创粉丝点击