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

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

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

原始考勤记录

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

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

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

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

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

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

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

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

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

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

需要引用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处理考勤数据)

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

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

(0)
上一篇 2022年8月7日 上午8:48
下一篇 2022年8月8日 上午8:31

相关推荐

  • 湖南汝城:主导发展草食牧业

      汝城县发挥天然草山草坡70多万亩的自然资源优势,以实施南方现代草地牧业推进行动项目、基层农技推广补助项目为契机,把发展以牛、羊养殖为主的草食牧业作为生态养殖的一项主导产业来抓,…

    科研百科 2022年5月22日
    346
  • 渭南政法网(通讯员 潘化团)今年以来,华阴市公安局交警大队机关党支部按照市局党委和大队党总支的总体部署要求,围绕党建工作中心和重点,强化组织领导,狠抓措施落实,积极创新工作模式,深…

    科研百科 2024年2月7日
    87
  • 新京报讯 据北京市自来水集团微信公众号消息,近日,北京市自来水集团与中国光大银行北京分行合作开发了居民水费自动缴费功能,并在支付宝app正式上线。此项服务率先在北京市东城区、西城区…

    科研百科 2024年5月9日
    39
  • #记录我的2023# 如何打造一个合格的创业团队,首要原则就是要按照项目管理来进行,以项目管理为中心,核心是要实行项目经理负责制,确保决策的工作重心高度集中,这是创业团队项目管理成…

    科研百科 2023年8月8日
    108
  • 科研项目结题是统一组织吗 近年来,随着科技的不断发展,科研项目结题也成为了一个热门话题。科研项目结题是指科研项目在完成研究任务后,经过专家评估和学术机构审查,确定科研项目已经结束,…

    科研百科 2024年4月11日
    38
  • 近年来,鄂尔多斯市应急管理局始终坚持围绕中心抓党建,抓好党建促工作,以保障安全、服务发展为主线,持续加强干部队伍建设,全力打造忠诚干净担当、高素质能战斗的“应急铁军”,助推鄂尔多斯…

    科研百科 2023年6月4日
    288
  • 获嘉县农牧业发展亮点纷呈

       今年前三季度,获嘉县以农业增效、农民增收为中心,优化农业产业结构,强化科技支撑、执法监管和惠农服务工作,各项工作呈现新亮点。uns   粮食生产稳中有升。获嘉县大力…

    科研百科 2022年6月1日
    294
  • 工程项目管理软件免费下载 随着现代项目管理的日益复杂和数字化,选择一款高效、易用、可靠的工程项目管理软件变得越来越重要。现在,我们可以在免费的在线平台或下载软件中找到适合自己的工程…

    科研百科 2024年5月27日
    29
  • 会议管理如何助力组织增值提效?攸信全方位解析会议管理技巧,为组织会议管理提供了新的变革方向。 会议管理技巧一:如何科学管控会议室资源?精准调配会议资源? 通过调查显示,90%的企业…

    科研百科 2022年10月26日
    229
网站地图