使用Python核算公司所有员工的薪资报表

前言

本篇内容,让你完全掌握Python是如何自动化办公的~

使用Python 读取Excel 中单元格的数据,自动核算每位员工的业绩提成、个税和实发工资。

使用Python核算公司所有员工的薪资报表_第1张图片

 

一、环境准备

1.1  Python 3.7.0

1.2  Pycharm  (Python 开发工具)

1.3  openpyxl  (处理Excel工具类)

openpyxlpy安装:pip install openpyxl -i https://pypi.douban.com/simple/

python3.7.0、pycharm 软件均在我们的百度网盘里:https://pan.baidu.com/s/1Pe0cZzLU1v46EHZZ7EGCnQ

资源失效了请加Python学习交流群进行获取:367203382

 

二、上代码

from openpyxl import load_workbook

# 薪资核算
def salary_cal():
    # 使用load_workbook函数,加载计算的薪资表
    wb = load_workbook("薪资表.xlsx")
    # 激活当前Excel的工作簿
    ws = wb.active

    # 使用iter_rows 函数遍历Excel中的数据
    # min_row=2 从第二行读起。已知Excel最大行是5.max_row=5
    # 读取第一列到第十一列的数据: min_col=1, max_col=11

    # 这里使用enumerate生成Excel表每行的索引,便于操作每行数据
    # 因为我们是从第二行读取,所以索引也要指定从2开始.

    excel_obj1= enumerate(ws.iter_rows(min_row=2, max_row=5, min_col=1, max_col=11, values_only=True), start=2)

    # 通过for循环遍历出每行数据
    for key,row in excel_obj1 :

        # 如果row[3]是业绩小于5千
        if int(row[3]) < 5000:
            # 按照规则业绩小于5千,提成是百分之5,插入对应的单元格
            ws.cell(row=key, column=5, value=row[3] * 0.05)

        # 如果业绩大于等于5千 小于1万
        elif 5000 <= int(row[3])  <10000 :
            # 按照规则是提成是百分之10
            ws.cell(row=key, column=5, value=int(row[3]) * 0.1)

        # 如果业绩大于等于1万
        elif int(row[3])  >= 10000:
            # 按照规则是提成是百分之15
            ws.cell(row=key, column=5, value=int(row[3]) * 0.15)
        else:
            print('暂时就想到这些规则')


    # 再次使用iter_rows 函数迭代数据。
    excel_obj2 = enumerate(ws.iter_rows(min_row=2, max_row=5, min_col=1, max_col=11, values_only=True), start=2)

    #工资和个税的计算
    for key,row in excel_obj2:

        # 请假扣薪
        # 因为请假扣薪是公式,按照公式自己计算出结果。
        if row[5] :
            qjkx = int(row[1] / 22 * row[5])

        # 当没有请假的时候,表格可以不填,但是不利于计算
        # 当表格为空,None 的时候,我们给他初始化为零
        else:
            qjkx = 0

        # 迟到扣薪
        cdkx = row[7] if row[7] else 0

        # 未扣税的工资
        sum =  int(row[1])+int(row[2])+int(row[3])+int(row[4])-qjkx-cdkx-int(row[8])

        # 当工资小于等于5千的时候,不扣税。
        if sum <= 5000:
            # 我们工资是第十一列,因为Excel中的索引是从1 开始。
            # key 我们用enumerate 生成的。便于插入到对应行row=key,
            # 对应列column=11,对应的值 value=sum。
            ws.cell(row=key, column=10, value=0)  # 插入个税
            ws.cell(row=key, column=11, value=sum) # 插入减去个税后的工资


        elif 5000 < sum <=10000:
            gs =  (sum-5000) *0.05 # 个税
            sum = sum - gs
            ws.cell(row=key, column=10, value=gs)
            ws.cell(row=key, column=11, value=sum )


        elif sum>10000:
            gs = (sum-5000) *0.08
            sum = sum - gs
            ws.cell(row=key, column=10, value=gs)
            ws.cell(row=key, column=11, value=sum)


    # 保存薪资
    wb.save(r"E:\Auto_Pro\薪资计算\薪资表结果.xlsx")



salary_cal()
print('工资表核算完成!')

 

你可能感兴趣的:(python)