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

前言

本篇内容,让你完全掌握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('工资表核算完成!')

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Python可以轻松地从Oracle数据库中读取数据并生成报表。以下是一些常用的Python库和步骤: 1. 安装必要的Python库:cx_Oracle、pandas、openpyxl等。 2. 连接到Oracle数据库,可以使用cx_Oracle库连接到Oracle数据库。 3. 通过SQL查询从Oracle数据库中获取数据,使用pandas库可以将查询结果转换为DataFrame对象。 4. 使用openpyxl等库将数据写入Excel文件中。 以下是一个示例代码,用于从Oracle数据库中获取数据并将其写入Excel文件中: ```python import cx_Oracle import pandas as pd from openpyxl import Workbook # 连接Oracle数据库 conn = cx_Oracle.connect('username/password@host:port/service_name') # SQL查询语句 sql = 'SELECT * FROM table_name' # 获取查询结果并转换为DataFrame对象 df = pd.read_sql(sql, conn) # 创建Excel文件 wb = Workbook() # 选择第一个工作表 ws = wb.active # 将DataFrame对象写入Excel文件中 for r in dataframe_to_rows(df, index=False, header=True): ws.append(r) # 保存Excel文件 wb.save('report.xlsx') # 关闭数据库连接 conn.close() ``` 以上代码中,需要替换的部分包括: - `username`和`password`:Oracle数据库的用户名和密码 - `host`:Oracle数据库的主机名或IP地址 - `port`:Oracle数据库的端口号 - `service_name`:Oracle数据库的服务名称 - `table_name`:需要查询的表名 - `report.xlsx`:生成的Excel文件名 当然,如果你需要生成其他格式的报表,可以使用不同的Python库来实现。例如,使用matplotlib库可以生成图表,使用reportlab库可以生成PDF报表等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里图书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值