钉钉考勤报表--工时统计小程序

本文介绍了如何使用Python处理钉钉考勤报表,统计每个员工的工时。通过读取和分析钉钉导出的原始Excel表格,结合公司的不同班次规则,实现了自动计算工时并生成新的Excel报表。最后,将Python脚本打包成EXE,方便Windows用户使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 起因:

老婆大人:今天弄一天的公司的考勤报表,看的我眼睛都花了。这工作太难了,老公,我不想干了。。。

我:说说

老婆大人:公司用的钉钉,一个月会导出一份excel报表,让我统计每个人投入工时。你是不知道,我们公司是灵活上下班,而且有的不同的班次,更残忍的是大家打卡次数可以是多次,,,我现在挨个员工去掰着手指去算:是不是迟到、迟到几分钟、是不是早退、早退几分钟、加班多久。。。弄的我眼睛都花了。。。

我:要不我看看

。。。 a few minite later

我:你想要什么样的

老婆大人:这个是我辛辛苦苦整理的,要这样的

我:好的

# 需求分析:

目标:客户要统计每个员工当月的投入工时。

## 背景:

1.公司是灵活上下班

    09:00-18:00

    10:00-19:00

2.特殊班次

     夜班:16:00-次日上班前

     保洁:06:00-08:00(8点前打扫完即可走)

3.钉钉可打卡多次,每次都会记录到导出的表格

## 资料

   原始表格

   从钉钉导出的原始报表,命名格式如:XXXX公司_考勤报表_20200801-20200831.xlsx

  目标表格

# 技术选型

 由于是简单的表格处理,属于工具型,因此选择python实现。同时考虑到易用性和用户使用场景是在windows电脑端,最后将python工具转换成EXE。

# 实施

。。。

# 测试验收

用户非常满意

# 交付

https://download.csdn.net/download/xdstuhq/12852539

2023-3-20 补充

好久不发文章了,偶然点开自己的旧文章,竟然发现“我这样一个白嫖党”却要求别人用积分下载。。。顿感羞愧!!!

随补充源码,欢迎技术交流,批评指正,先致谢!

注:运行源码需要“python 操作excel”相关依赖,GitHub上就有,请提前就绪

# -*- coding: utf-8 -*-

import os
import threading
import time
import tkinter as tk
import xlrd
import xlwt
from datetime import datetime
from tkinter import Tk, Label, StringVar, Entry, Button, mainloop, W,filedialog,ttk,LEFT

date_pre = r'2016-12-21 '
date_pre_next = r'2016-12-22 '
date_suf = r':00'
chi_dao = r'迟到'
zao_tui = r'早退'

在Java中解析钉钉考勤报表通常涉及到CSV或JSON格式的数据,因为钉钉考勤记录通常会被导出为这些常见的数据格式。以下是基本步骤: 1. **导入必要的库**:如果数据是CSV,可以使用`java.io.FileReader`配合`csv-parser`库来读取;如果是JSON,可以用`org.json.JSONObject`或者`com.alibaba.fastjson.JSON`。 ```java import com.alibaba.fastjson.JSON; import java.io.BufferedReader; import java.io.FileReader; ``` 2. **读取数据**: - CSV:读取每一行,解析成字段。 ```java BufferedReader br = new BufferedReader(new FileReader("dingtalk_attendance.csv")); String line; while ((line = br.readLine()) != null) { // 解析CSV行,例如逗号分隔 String[] fields = line.split(","); // 对每个字段进行处理 } ``` - JSON:加载整个文件到JSONObject,然后逐级访问元素。 ```java String jsonStr =.readFile("dingtalk_attendance.json"); JSONObject obj = JSON.parseObject(jsonStr); JSONArray attendances = obj.getJSONArray("attendances"); // 遍历数组计算总考勤时间 ``` 3. **数据处理**:根据业务需求,对考勤数据进行计算,比如迟到次数、早退次数、旷工天数等。 ```java int lateCount = 0; // 迟到次数 // ...类似地计算其他指标... ``` 4. **结果输出**:将计算结果保存到新的文件或数据库中。 ```java writeResultToFile(lateCount, "attendance_report.txt"); ``` 5. **异常处理**:检查文件是否存在、解析过程中可能出现的异常等,并确保妥善处理。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值