咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

实例16—工作表、顺序、人数都不同,快速计算工资总和

场景模拟:()

结合day15,我们知道,在每个月份的工作表中,由于人员离职或者入职,职工人员是在变化着的,并且每个工作表中的顺序又不相同,还有,不是所有人都干满12个月,怎么快速计算本年度员工工资呢,真的很头疼,交给python很轻松解决。

1、用到的知识点:

Python的基本数据结构,包括集合和字典及字典生成式、python处理excel的openpyxl模块:wb对象遍历,ws对象遍历及工作表新增和写入,单元格cell遍历读取等。

2、操作步骤思维导图:

3、用到的文件及对应视频:

文件见day15分享,本节操作和上一节紧密结合,请完成转换后才能利用。

核心思想:建立员工数据结构,遍历每个月,每一行,把对应姓名的人员工资添加到字典中的value值列表中。 {'山河':[1,2,3,4], '岳不':[333,333,444,],……}

对应视频

4、代码操作编写截图:

give your the code:

from openpyxl import load_workbook wb = load_workbook('2021年度工资.xlsx') employee = set() # 获取所有员工信息 for ws in wb.worksheets: for row in ws.iter_rows(min_row=2,max_col=1): for cell in row: employee.add(cell.value) # 初始化员工数据结构 # emp_data = dict.fromkeys(employee,[]) 巨大的坑 emp_data = {key:[] for key in employee} # 循环遍历添加对应员工各月工资信息 for ws in wb.worksheets: for i in range(2,ws.max_row+1): name = ws['A'+str(i)].value salary = ws['C'+str(i)].value emp_data[name].append(salary) # 创建汇总表 all = wb.create_sheet('total') all.append(('姓名','总工资')) # 添加表头 for k,v in emp_data.items(): all.append((k,sum(v))) # 添加姓名和总工资 wb.save('result.xlsx')

汇总结果

特别提醒:初始化员工工资是数据结构时候,有一个巨大的坑,我已犯错,请你避过