还在为员工的考勤记录保存在一行发愁吗,python帮你5秒搞定(python处理考勤数据)

看下图的考勤记录, 是不是有些眼晕,还不知怎么搞定它?

还在为员工的考勤记录保存在一行发愁吗,python帮你5秒搞定(python处理考勤数据)

原始考勤记录

今天就再说说对考勤记录的处理,有些考勤软件导出的考勤记录符合数据库的格式,每条记录是一行,处理起来很方便,但还有一些人脸识别考勤机,可能是比较便宜吧,只提供u盘导出数据的功能, 然后导出的数据每个员工是一行,并且还一个单元格中包含多条考勤记录,用换行符进行了分隔,如下图,对于这种表格的考勤记录那还能处理吗,当然是可以的,只要它的数据有规律,那就可以进行处理,不过很显然没法使用excel的函数公式来处理了,而是使用 python编程来对表格进行处理,最终还原成每行一条考勤记录的状态。

第一步:找数据规律

找好规律才能对数据进行处理,经过观察我们发现它有以下的规律

1、有一个标题行,里面存的是月份中的每一天,所以最多只有31列

2、工号和姓名单独保存在一行,工号在A列,姓名在I列

3、工号姓名的下一行是员工的考勤数据

4、一个单元格中的多条考勤记录是通过换行来分隔的

第二步:数据分解原理

1、先获取表格中的最大行和最大列,用来确定考勤记录的范围

2、使用双循环嵌套,按行进行数据的读取

3、对读取到的内容进行组合、拼接等

4、保存读取到的内容至一个新的表格中

第三步:使用python进行编程

需要引用openpyxl包,用它处理excel最是方便了

为了便于理解,直接设置好考勤记录文件的位置和名称,让python可以直接读取到文件,我们把它放在D盘根目录下面,读取表格的最大行和列。

print(\”#\”*25 \”使用说明\” \”#\”*25)

print(\”# 原始考勤表格请放至D盘根目录下,更改名称为\’刷卡记录.xlsx\’ \”)

print(\”# 请按照提示输入四位数年份和两位数月份 \”)

print(\”#\”*60)

print(\”n\”)

rows,cols=1,1

sheetName=\”刷卡记录\”

tableName=r\”D:刷卡记录.xlsx\”

year=\”\”

Y=input(\”请输入考勤的年份:\”)

M=input(\”请输入考勤的月份:\”)

wb=xl.load_workbook(tableName)

sheet=wb.get_sheet_by_name(sheetName)

rows=sheet.max_row

cols=sheet.max_column

print(\”考勤表格总共有行数%d,列数%d\”%(rows,cols))

用代码创建一个新表,并初始化表头,只需要三列就行了,保存号码、姓名、日期

ws=wb.create_sheet(\”Sheet1\”)

sheetNew=wb.get_sheet_by_name(\”Sheet1\”)

sheetNew[\”A1\”].value=\”号码\”

sheetNew[\”B1\”].value=\”姓名\”

sheetNew[\”C1\”].value=\”日期\”

使循环来读取原始表格中的数据,在读取完成后保存成一个新表

hm=\”\”;xm=\”\” #号码,姓名js_i,js_j=1,1 #新表记数for i in range(5,rows 1): xh=\”\” print(\”正在转化第%d行数据…\” %(i)) for j in range(1,cols 1): xh=sheet.cell(row=i,column=j).value if xh is None: continue if xh in \”工 号: \”: hm=sheet.cell(row=i,column=3).value xm=sheet.cell(row=i,column=11).value break else: year=str(Y) \”-\” str(M) \”-\” str(j) \” \” xh_str=xh.split(\’n\’) for x in xh_str: if x: js_i = 1 sheetNew.cell(row=js_i, column=1).value = hm sheetNew.cell(row=js_i, column=2).value = xm sheetNew.cell(row=js_i, column=3).value = year x \”:00\”try: wb.save(tableName) print(\”保存完成,请打开查看…\”)except: print(\”保存文件时出错…\”)

还在为员工的考勤记录保存在一行发愁吗,python帮你5秒搞定(python处理考勤数据)

好了,到此就把一个复杂的表格转换完成了,新的表格将会是一个标准的考勤记录表,然后就可以放在专门编写的考勤软件中进行查看了。

来运行一下软件看看最终的结果,执行完成后打开D盘根目录下的“刷卡记录.xlsx”文件会发现里面多了一个sheet1,就是转换完成后的数据。

还在为员工的考勤记录保存在一行发愁吗,python帮你5秒搞定(python处理考勤数据)还在为员工的考勤记录保存在一行发愁吗,python帮你5秒搞定(python处理考勤数据)

总结:对于一些复杂格式的数据Excel无能为力处理时,就需要借助一些简单的编程工具来处理了,可以实现数据的快速处理

有好的想法可以加关注交流,如需要编译好的程序可以加关注后发送。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年9月29日 上午9:48
下一篇 2022年9月29日 上午9:50

相关推荐

  • 项目管理系统研发费用

    项目管理系统研发费用 项目管理系统是许多企业用于管理项目和预算的重要工具。随着项目管理水平不断提高,企业对于项目管理系统的需求也在不断增加。然而,项目管理系统的研发和投入成本相对较…

    科研百科 2024年12月17日
    1
  • 图书管理系统项目立项

    图书管理系统项目立项 随着现代社会的不断发展,图书馆成为了人们获取知识的重要场所。然而,传统的图书馆管理方式已经无法满足人们对于信息获取和共享的需求。因此,开发一款高效的图书管理系…

    科研百科 2024年12月30日
    0
  • 科研项目具有

    科研项目具有是当前社会热点话题之一。随着科技的不断发展,科研项目具有越来越多样化和复杂化。科研项目具有不仅可以推动科学技术的进步,也可以为研究人员提供丰富的实践机会和挑战。 在科研…

    科研百科 2025年2月13日
    0
  • 对毕业生主动“延毕”多点理解(主动延期毕业)

    作者:王钟的 大学延迟毕业,通常是考试挂科、论文未通过、学分未修满等学业出现特殊状况的学生所考虑的问题。不过,近年来,一些学生主动选择延迟毕业。据媒体报道,他们有的是为了在准备考研…

    科研百科 2024年4月14日
    150
  • 国家电网项目管理业务中台上线运行(国家电网中台项目组)

    12月9日,国家电网有限公司召开项目管理业务中台上线发布会,进一步加快项目管理数字化转型,推动“一体四翼”发展布局落地,更好服务碳达峰、碳中和目标和新型电力系统建设。公司总经理、党…

    2022年6月9日
    442
  • 集团科研项目管理

    集团科研项目管理:挑战与机遇 科研项目管理是一个重要的领域,涉及到多个方面,包括项目管理、资源管理、质量管理、风险管理等。随着科技的快速发展,集团科研项目管理已经成为一个重要的趋势…

    科研百科 2025年2月22日
    0
  • 家具erp系统

    家具ERP系统:提升企业效率,优化家具采购流程 随着现代企业的竞争越来越激烈,企业需要不断地提升效率和优化流程,才能够在激烈的市场竞争中脱颖而出。对于家具企业来说,采购流程是其非常…

    科研百科 2025年1月4日
    0
  • 国内外最顶级的十款项目管理软件推荐收藏「2022年第一期更新」(项目管理软件排行榜)

    无论是在国内还是国外,市场上都有几十款项目管理软件,而要了解到底哪个更好更适合自己,一一尝试将会耗费我们非常多的时间。 但在国外项目管理软件的选择过程会相对的简单,因为国外有一个类…

    科研百科 2024年2月16日
    273
  • java项目实战企业管理系统

    Java项目实战企业管理系统 随着企业信息化的不断发展,企业管理系统已经成为了企业运营中不可或缺的一部分。企业管理系统可以提高企业的效率和管理水平,从而促进企业的发展。本文将介绍一…

    科研百科 2025年1月24日
    0
  • 养猪场侵犯农田 牧原集团南阳项目遭叫停背后:高猪价带来高红利

    近日,南阳市和牧原股份正在推进的“百场千万”工程引发舆论关注,据悉,该工程要在南阳13个县建84个养猪场,计划占用基本农田接近1.5万亩。 对此,有当地村民明确表示反对,“没有口粮…

    科研百科 2022年7月10日
    322