Python3读取Excel,日期列读出来是数字的处理

摘要:
Python读取Excel。如果日期在Excel中,则它是浮点型,不能直接使用。读取表的数据类型ctype被确定用于进一步处理。

  Python读取Excel,里面如果是日期,直接读出来是float类型,无法直接使用。

  通过判断读取表格的数据类型ctype,进一步处理。

  返回的单元格内容的类型有5种:

  ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

  ctype =sheet1.cell(iRow,iCol).ctype

  参考示例如下:

  比如excel里面时间格式的数据,python读取时是float类型:

  Python3读取Excel,日期列读出来是数字的处理第1张

  读取后分别是:

  Python3读取Excel,日期列读出来是数字的处理第2张

  如何变成界面显示的格式

   

import os
import xlrd
import datetime
from xlrd import xldate_as_tuple

def test_Excel_date(excelFile):
    if os.path.exists(excelFile):
        data = xlrd.open_workbook(excelFile)
        table = data.sheets()[0]
        nrows = table.nrows  # 行数
        list1 = []
        # Python读Excel,返回的单元格内容的类型有5种:
        # ctype: 0 :empty;  1: string; 2 number;    3 : date;  4 : boolean,; 5: error
        # ctype = sheet1.cell(iRow, iCol).ctype
        #2021-01-01 对应的excel格式日期的float类型值
        y_date = 44197.0
        for i in range(1, nrows):
            ctype = table.cell(i, 1).ctype
            sCell = table.cell_value(i, 1)
            sCell = get_cell_value(sCell, ctype)
            print(sCell)

def get_cell_value(sCell,ctype):
    '''
    获取Excel日期格式单元格数据,Python读Excel,返回的单元格内容的类型有5种:
    ctype:
    0 :empty
    1: string
    2: number;
    3: date;
    4:boolean,;
    5:error
    :param sCell: 单元格数据
    :param ctype: 数据类型
    :return:
    '''
    # 44197.0 为2021-01-01对应的excel格式的float值,做辅助用
    y_date = 44197.0
    istime = 0
    # 日期格式
    if ctype == 3:
        # 日期数据只包含  %H:%M:%S,不包含%Y-%m-%d ,比如:01:31:52,
        # 23:59:59的float形式值为:  0.999988425925926,是小于的,
        if sCell < 1:
            istime = 1
            sCell = y_date + sCell
        dtime = datetime.datetime(*xldate_as_tuple(sCell, 0))
        strTime = dtime.strftime('%Y-%m-%d %H:%M:%S')
        # 只包含时间,没有日期 比如:01:31:52
        if istime == 1:
            return strTime[11:]
        else:
            # 44521.0000115741 对应:2021/1/1 9:28:11格式%Y-%m-%d %H:%M:%S
            # 44561.0   对应:2021/1/1 格式%Y-%m-%d
            return strTime
    else:
        return sCell

if __name__=="__main__":
    imageFile = 'D:/test.xlsx'
    test_Excel_date(imageFile)

  

免责声明:文章转载自《Python3读取Excel,日期列读出来是数字的处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle11g dataguard部署指南es6的_.unionBy和Math.floor的用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jsp页面上传excel表格,后台java代码获取并解析

前台body部分: js部分: java代码:action层代码  这个是解决显示的数字带有.0的问题的方案 要有这三个的getting和setting方法  自己上传的excel表格的内容的属性 我的excel表格是这样的:(注意excel表格后缀名是.XLSX) 我这只是获取前台上传的excel表格内容 并没有传入数据库 ,也没有做前台ex...

excel多组数据散点图生成

  在研究数据分布时,散点图是一类比较常用的方法,通过三点图可以很好的显示数据的分布位置。一组数据生成散点图,利用excel是很容易生成的;但是,多组数据生成散点图,不同组数据用不同颜色表示,那该怎么生成呢?   在我经过半个多小时的学习后,我终于学会了如何用excel生成多组数据的散点图。下面是方法:   1、选择三点图的横坐标数据,纵坐标数据。如图,成...

数据可视化之PowerQuery篇(九)巧用Power Query,Excel也可以轻松管理文档

https://zhuanlan.zhihu.com/p/111674088 ​来自知乎一个朋友的问题,如何在Excel中批量插入文件的超链接,以便在Excel中对文档进行有序的目录管理? 这个问题的方法很多,这里给出一个简便且高效的方法,利用Power Query。   假设需要管理的文档存放于三个文件夹中,   每个文件夹中有4个文件,   下面就...

EasyPoi使用入门

咱们在开发的时候,总会遇到需要通过代码操作办公软件的情况,而excel与word的操作最为频繁。 当然我们Java程序员可以选择JXL或者POI来完成相应的Excel操作,但是大家用过都知道,有些地方感觉还是不够简单,不那么尽如人意。 今天给大家介绍一个EasyPoi,就算我们不会底层的POI,也可以非常轻松的完成Excel的操作。EasyPoi,主打简单...

Python3自定义http/https请求拦截mitmproxy脚本

[本文出自天外归云的博客园] 脚本内容 代码如下: from mitmproxy importhttp, ctx from multiprocessing importLock classFilter: def __init__(self, filter_info): self.log_info = "" s...

python3 字符串base64编码

在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码,对拿到的响应报文进行解码; str(源字符串)--str(加密后)--str(解密) Python 2 将 strings 处理为原生的 bytes 类型,而不是 unicode, Python 3 所有的 strings 均是 unico...