使用openpyxl对Excel进行增删改查并调用其函数,具体内容如下代码所示,调踊第三方库进行修改。
import openpyxl
#Excel 第一行第一列是[1,1]
# 使用相对路径,在同级目录下
wb = openpyxl.load_workbook('data.xlsx')
# 选择data表单
sh = wb["data"]
sheet = wb.active # 将活跃表单赋值给一个变量
man = 0 # 男生人数
woman = 0 # 女生人数
manHeight = 0 #男身高和
womanHeight = 0 #女身高和
womanAvg = 0 #男平均身高
manAvg = 0 #女平均身高
# 用于获取key值
title=[]
# 姓氏-人数
head={}
# 姓氏-身高平均
headAvg={}
# 按行读取转换列表,第一行当做key
for item in list(sh.rows)[0]:
title.append(item.value)
# 读取姓氏并写入head字典和headAvg字典
for item in list(sh.columns)[0]:
name = item.value
headKey = list(head.keys())
if name[0]=='姓':
continue
if name[0] in headKey:
# 获取横坐标并定位至身高的位置,取值到字典中
headAvg[name[0]] += sheet.cell(item.row, 3).value
head[name[0]]+=1
else:
# 没有就创建
headAvg[name[0]]=sheet.cell(item.row,3).value
head[name[0]]=1
# 读取除了第一行的数据
for item in list(sh.rows)[1:]:
# 空字典接收数据
value_dict={}
# len(item) 获取列数
for index in range(len(item)):
value_dict[title[index]] = item[index].value
# 根据性别计算身高和
if value_dict['性别']=="女":
woman+=1
womanHeight+=value_dict['身高']
if value_dict['性别']=="男":
man+=1
manHeight+=value_dict['身高']
# 根据性别计算身高平均值
womanAvg=womanHeight/woman
manAvg=manHeight/man
# 给单元格赋值
sheet['E2'] = '男生平均身高'
sheet['E3'] = '女生平均身高'
sheet['F2'] = manAvg
sheet['F3'] = womanAvg
n=2
sheet['G1'] = '姓氏'
sheet['H1'] = '人数'
sheet['I1'] = '平均升高'
for key,value in head.items():
sheet['G' + str(n)] = key
sheet['H'+ str(n)] = value
# 除法计算平均
sheet['I' + str(n)] = headAvg[key]/head[key]
n = n + 1
# 保存,使用相对路径
wb.save('data.xlsx')