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

Excel 时间读取
当本地Excel存有一个时间列时,使用下面代码读取Excel
import xlrd

book = 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 datetime

for 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 xlrd
from xlrd import xldate_as_tuple
import datetime

book = 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



  • 17
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值