Python 的xlrd库读取日期和数字时输出显示不正确问题解决

这里是要读取的数据,有数字和日期,用xlrd库读取的时候会发现,数字后面多了个".0",读取的日期变成了时间戳

def get_sheet1_data(excelDir, sheetName=None):
    # 1- excel 放到磁盘----把它加载到内存里
    workBook = xlrd.open_workbook(excelDir)
    # 2- excel 指定表
    sheet = workBook.sheet_by_name(sheetName)
    example_row = sheet.nrows
    data = []
    for _ in range(1, example_row):
        onerow = [sheet.row_values(_)[i] for i in range(len(sheet.row_values(1)))]
        data.append(onerow)
    return data

执行结果:
[['iosapp0', 123456.0, 44906.0, 1.0, '', ''], ['', 123456.0, 44906.0, 0.0, '', ''], ['iosapp0', '', 44906.0, 0.0, '', ''], ['iosapp00', 123456.0, 44906.0, 0.0, '', '']]

这当然不是我们想要的结果:因此需要优化代码

def get_sheet1_data(excelDir, sheetName=None):
    # 1- excel 放到磁盘----把它加载到内存里
    workBook = xlrd.open_workbook(excelDir)
    # 2- excel 指定表
    sheet = workBook.sheet_by_name(sheetName)
    example_row = sheet.nrows
    data = []
    for eachrow in range(1, example_row):
        onerow = []
        for eachcol in range(3):
            ctype = sheet.cell(eachrow, eachcol).ctype
            cell = sheet.cell_value(eachrow, eachcol)
            if ctype == 2 and cell % 1 == 0.0:  # ctype为2且为浮点
                cell = int(cell)  # 浮点转成整型
                cell = str(cell)  # 转成整型后再转成字符串,如果想要整型就去掉该行
            elif ctype == 3:
                date = datetime(*xldate_as_tuple(cell, 0))
                cell = date.strftime('%Y/%m/%d %H:%M:%S')
            elif ctype == 4:
                cell = True if cell == 1 else False
            onerow.append(cell)
        data.append(onerow)
    return data

[['iosapp0', '123456', '2022/12/11 00:00:00'], ['', '123456', '2022/12/11 00:00:00'], ['iosapp0', '', '2022/12/11 00:00:00'], ['iosapp00', '123456', '2022/12/11 00:00:00']]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shan_non

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值