给定列表,按照列表内容获取excel指定列名下的内容

excel文件内容如下:

 

 

 想要实现的功能:指定想要获取的列名,返回列名和内容的字典列表

栗子:输入:columnname=["姓名","班级","身高"]

         预期返回:

[{'姓名': '小张', '班级': '1年6班', '身高': 175}, {'姓名': '小张', '班级': '1年6班', '身高': 175}, {'姓名': '小张', '班级': '1年6班', '身高': 175}]

'''
功能说明:file是文件路径,namelist是想要获取内容的excel列名
'''
import openpyxl
def getdata(file,namelist):
workbook=openpyxl.load_workbook(file)
sheet=workbook['Sheet1']
columnnamecell=sheet['1'] #获取第一行的所有cell
columnname=[y.value for y in columnnamecell ] #namelist中字段在excel中的行数列表
mappinglist=[]

for rownum in range(2,sheet.max_row+1):
mapping = {}
for x in namelist:
index_num=columnname.index(x)+1 #excel索引和数组索引差1
mapping[x]=sheet.cell(rownum,index_num).value

mappinglist.append(mapping)

return mappinglist

if __name__=="__main__":
column_name=["姓名","班级","身高"]
file="test.xlsx"
dic=getdata(file,column_name)
print(dic)
)

 

 

输出:

D:\pythonprogrem\get_excel_data\venv\Scripts\python.exe D:/pythonprogrem/get_excel_data/getdata.py
[{'姓名': '小李', '班级': '3年2班', '身高': 162}, {'姓名': '小王', '班级': '2年3班', '身高': 180}, {'姓名': '小张', '班级': '1年6班', '身高': 175}]

 注意:在获取excel行数的时候,即使单元格值是空,但如果单元格有特殊格式,也会被openpyxl认为是有值

posted @ 2020-12-09 15:00  mghhz816  阅读(915)  评论(0编辑  收藏  举报