专业编程基础技术教程

网站首页 > 基础教程 正文

python处理Excel实战进阶篇day16(乱序不定人数工资表格汇总)

ccvgpt 2025-04-05 17:11:50 基础教程 11 ℃

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

场景模拟:(本节视频)

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

python处理Excel实战进阶篇day16(乱序不定人数工资表格汇总)

1、用到的知识点:

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

2、操作步骤思维导图:

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

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

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

对应视频 <day16配套视频>

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')

汇总结果

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

最近发表
标签列表