首先我们知道大部分的文件都是如下图所示的表:
一般我们会处理掉无用的标题和保证数据的唯一性导入
#导入对应的包
from openpyxl import load_workbook
global zg
#读取文件
workbook = load_workbook(filaname)
sheet = workbook["GZB"]
# 拿到所有的数据后利用 rows 按照行获取表单中所有的格子,每一行的数据放到一个元祖中
res = list(sheet.rows)
cell_values=sheet.cell(row=2,column=1).value
# 获取excel表格中的第一行的数据,作为字典的key==》生成一个list列表
title = [i.value for i in res[2]]
return title
拿到的数据就是所有的标题我们作为key:
# zg_cases作为每个字典的大容器
zg_cases = []
# 我们根据不需要的行来进行数据筛选遍历第一行意外的所有行
for item in res[3:]:
# 获取每行的数据
dataline = [i.value for i in item]
#利用dict和zip的方法将获取到的数据组装一起
dicline = dict(zip(title, dataline))
zg_cases.append(dicline)
# zg_cases.sort(key=lambda temp:temp['市值'])
return [zg_cases,cell_values]
最终就形成了列表套字典的数据
菜鸡勿喷记录方法而已
纯推荐一个公众号:测试开发干货(纯推荐)
完整代码如下:
def Excel_Read(filaname):
global zg
# if filaname.split('.')[0]==zg:
workbook = load_workbook(filaname)
sheet = workbook["GZB"]
# # rows 按照行获取表单中所有的格子,每一行的数据放到一个元祖中
res = list(sheet.rows)
cell_values=sheet.cell(row=2,column=1).value
# 获取excel表格中的第一行的数据,作为字典的key==》生成一个list列表
title = [i.value for i in res[2]]
# 作为每个字典的容器
zg_cases = []
# 遍历第一行意外的所有行
for item in res[3:]:
# 获取每行的数据
dataline = [i.value for i in item]
dicline = dict(zip(title, dataline))
zg_cases.append(dicline)
# zg_cases.sort(key=lambda temp:temp['市值'])
return zg_cases