Python的openpyxl库读取excel文件(2)

1、读取的数据的类型的问题总结:
-如果单元格为空(没有编辑过数据)读取出来是 None == 注意空格是字符串 不是None
-如果单元格里只有数字,那么读取出来直接是数字-- 整型或者浮点型
-如果单元格当中用只有TRUE FALSE (excel表格会自动默认大写), 那么读取转化为布尔值类型–True False;
-如果单元格只有时间格式 : 2024/12/22,那么读取出来就是 datatime类型 - 年月日时分秒 - datetime.datetime(2024, 12, 22, 0, 0)
-以上都不是,那么就是字符串的类型;比如列表 字典等数据。因为excel表格不认识字典这些数据类型 所以都是字符串。

  • 1、字符串包裹的列表、字典数据 – 脱引号 – eval()
  • 2、字符串包裹的非Python表达式,不能通过eval处理–json反序列来操作化
"""
函数封装步骤: 任何功能代码都可以封装函数。
1、第一步:先把功能代码写出来 【逻辑】  -- ok
2、第二步: def,封装函数 , 选中所有的逻辑代码-tab缩进
3、第三步:考虑是否存在变化的数据--有做参数化 == 作为函数的参数
4、第四步:判断是否需要返回值,return定义返回值

项目分层管理思想。
"""
from openpyxl import load_workbook
from tools.handle_path import excel_path


def red_exc(ee, sheet):
    wb = load_workbook(ee)
    sh = wb[sheet]
    # 读取当前表单全部数据
    cases = list(sh.values)  # 得到列表嵌套元组的数据
    print(cases)
    print(type(sh.values))
    # 每条用例数据都要跟表头元组压缩,先取出来表头
    heading = cases[0]
    # print(heading)
    list_case = []  # 定义空列表,用来存放压缩后的字典数据
    # 依次拿到后面的每一行的数据-遍历,分别与表头行zip压缩
    for i in cases[1:]:
        data = dict(zip(heading, i))  # zip压缩后转成字典
        # print(data)
        list_case.append(data)
    return list_case