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:pythonprogremget_excel_datavenvScriptspython.exe D:/pythonprogrem/get_excel_data/getdata.py
[{'姓名': '小李', '班级': '3年2班', '身高': 162}, {'姓名': '小王', '班级': '2年3班', '身高': 180}, {'姓名': '小张', '班级': '1年6班', '身高': 175}]
注意:在获取excel行数的时候,即使单元格值是空,但如果单元格有特殊格式,也会被openpyxl认为是有值