本篇内容,让你完全掌握Python是如何自动化办公的~
使用Python 读取Excel 中单元格的数据,自动核算每位员工的业绩提成、个税和实发工资。
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('工资表核算完成!')