跳至主要內容

07-Python自动化结算工资和统计报表

AI悦创原创2022年7月16日Python 办公自动化Python 办公自动化大约 14 分钟...约 4269 字

实例需求说明

学习了 Excel 文件的写入、读取和追加内容,那现在来做个案例。

需求描述并整理,如下:

简单的财务自动化结算需求,并且给出了各部门的工资表格文件和统计报表的模板文件。

需求说明图示

简单的财务自动化结算需求,并且给出了各部门的工资表格文件和统计报表的模板文件,截图如下:

image-20220715211758604
image-20220715211758604

自行生成各部门所需数据

2019-12-财务部
部门姓名工号薪资(元)迟到次数(次)奖金(元)实发工资
财务部陈鹏G982456009005460
财务部侯小红G69810539240010899
财务部胡建平G910628404006684
财务部张鑫G61710473260011033
财务部王勇G3269227090010127
财务部刘娜G63808503008385
财务部李桂香G73414048070014748
财务部郝佳G73012020320012160
财务部许秀英G561807842008198
财务部林飞G1615081260015641
财务部李雪G60211905080012705
财务部吴桂花G67811469140011849
财务部申阳G53011905330012145
财务部穆俊G794492303005223
财务部杨洁G49014929340015269
财务部冯浩G84812434480013154
财务部李杨G637474403005044
财务部郭桂珍G66211130280011890
财务部高鑫G293853034008870
财务部刘红G973771648008436
财务部康雪G167865704009057
财务部彭玉梅G59312679090013579
财务部李玉珍G65212819120012999
财务部杜帅G131736506007965
财务部刘小红G1619878060010478
财务部谢健G446881017009490
财务部周冬梅G17211333230011593
财务部刘秀芳G639824103008541
财务部黄娟G70515792180016572
财务部王桂芝G308715904007559
财务部刘桂荣G402689445007314
财务部程坤G13213066330013306
财务部王洁G722442505004925
财务部杨洋G74911481460012001

批量生成财务报表.ipynb”这个文件里面有可执行代码,执行后会自动的生成 5 个部门的财务文件。你也可以自己使用下面代码自动生成:

下面是财务文件和模板文件的截图:

image-20220715221653761
image-20220715221653761
image-20220715222043587
image-20220715222043587

财务文件中,每个用户数据,都是缺少应发工资的,需要用程序计算和填写;

模板文件的使用,需要将本月的部门财务文件全部计算并统计出来,然后填充到模板文件中,生成一个本月的数据总览表格,如下截图:

image-20220715222746640
image-20220715222746640

选中的部分是需要使用程序自动填写。

一共有5个财务文件,每个文件有不固定个数的员工信息。

那接下来就开始写代码,实现自动化工资结算和统计报表的任务。

库的导入和准备代码

首先第一步,导入需要的库,生成时间对象。还有就是文件夹中,放着很多文件,有 xlsipynb 等格式,所以还需指定要操作的文件名,如下代码:

import datetime
import xlrd, xlwt
from xlutils.copy import copy

department = ['技术部', '推广部', '客服部', '行政部', '财务部']
template_name = "月结统计模板.xls"
today_datetime = datetime.datetime.now()
need_process_xls = []
for dep in department:
    xls_name = "{}-{}.xls".format(datetime.datetime.now().strftime("%Y-%m"), dep)
    need_process_xls.append(xls_name)
print(need_process_xls)
# 输出:['2022-12-技术部.xls', '2022-12-推广部.xls', '2022-12-客服部.xls', '2022-12-行政部.xls', '2022-12-财务部.xls']

这里指定了模板文件名,时间对象,然后批量的生成了所需处理的部门财务文件。

Python 自动化结算工资

每个财务文件都是完全一致的,就是数据的不同,所以接下来,做一个函数,所做的操作就是接收文件名,并计算出文件中全部人员的工资,并写入文件然后保存。代码如下:

对函数代码进行介绍:

最下面的 for 循环,就是循环读取要操作的全部财务文件,逐个进入函数中操作,计算工资和保存。

Python 自动化结算工资+报表统计

自动化的工资结算已经处理好了,下面就是统计各个部门的财务报表。

报表中,需要写入 部门、总人数、迟到人数、拿奖金人数、应发总工资这五项,还有头部的“xxxx-xx-各部门员工数据总览

部门的数据,都是从单个的部门财务文件中获取,例如迟到人数和拿奖金人数,都是判断是否迟到和是否有奖金,都用一个参数进行记录。

这个需求,可以在原来的函数之上,做个统计操作,并在函数结尾时,将这五个数据,做成列表并返回回去。

最后一个就是统计报表的头部字段,里面含有年份和月份,这个可以直接使用时间对象生成即可,但是字体的大小和居中效果是需要额外定义样式 style 的,所以这部分代码比较突兀,大家看懂即可。

如下代码:

这个代码是基于上一个函数代码的,多了部门信息统计和基于模板文件生成”xxxx-xx-各部门员工数据总览.xls“的统计文件

以上就是本次任务的实现过程。结合代码块1和代码块3,就是完整的代码块。

源码中有文中的全部代码文件,包含“批量生成财务报表.ipynb”的代码文件,可以自动生成任意多个部门和任意多个员工的财务文件。

欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!

公众号:AI悦创【二维码】

AI悦创·编程一对一

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh

C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh

方法一:QQ

方法二:微信:Jiabcdefh

详情
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
通知
关于编程私教&加密文章