在好例子网,分享、交流、成长!
您当前所在位置:首页 → Python 开发实例 → 常用Python方法 → 员工考勤统计与异常标记工具:导入打卡记录、自动计算工时、迟到早退缺卡标记、月度汇总导出Excel

员工考勤统计与异常标记工具:导入打卡记录、自动计算工时、迟到早退缺卡标记、月度汇总导出Excel

常用Python方法

下载此实例

实例介绍

🖥️ 运行效果

🚀 实例简介

一款实用的考勤管理桌面工具,支持导入员工打卡记录CSV文件,自动计算每日工时,智能标记迟到、早退、缺卡等异常情况,并支持月度汇总报表一键导出Excel。适合HR和行政人员快速处理考勤数据。

💻 核心代码

import os
import csv
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import platform

CHINESE_FONT = "WenQuanYi Zen Hei" if platform.system() == "Linux" else "Microsoft YaHei"

class AttendanceApp:
    """员工考勤统计与异常标记工具"""
    
    def __init__(self, root):
        self.root = root
        self.root.title("员工考勤统计与异常标记工具")
        self.root.geometry("820x580")
        self.root.configure(bg="#f0f4f8")
        self.records = []
        
        # 标题
        tk.Label(root, text="📋 员工考勤统计与异常标记工具",
                 font=(CHINESE_FONT, 16, "bold"), bg="#f0f4f8", fg="#1a365d").pack(pady=10)
        
        # 按钮区
        btn_frame = tk.Frame(root, bg="#f0f4f8")
        btn_frame.pack(pady=5)
        tk.Button(btn_frame, text="📂 导入打卡记录", command=self.load_csv,
                  font=(CHINESE_FONT, 11), bg="#3182ce", fg="white",
                  relief="flat", padx=12, pady=4).pack(side="left", padx=5)
        tk.Button(btn_frame, text="📊 统计分析", command=self.show_stats,
                  font=(CHINESE_FONT, 11), bg="#38a169", fg="white",
                  relief="flat", padx=12, pady=4).pack(side="left", padx=5)
        tk.Button(btn_frame, text="💾 导出Excel", command=self.export_excel,
                  font=(CHINESE_FONT, 11), bg="#d69e2e", fg="white",
                  relief="flat", padx=12, pady=4).pack(side="left", padx=5)
        
        # 表格
        cols = ("姓名", "日期", "上班打卡", "下班打卡", "工时(h)", "状态")
        self.tree = ttk.Treeview(root, columns=cols, show="headings", height=14)
        for c in cols:
            self.tree.heading(c, text=c)
            self.tree.column(c, width=120, anchor="center")
        self.tree.pack(padx=20, pady=8, fill="both", expand=True)
        
        # 颜色标签
        self.tree.tag_configure("late", background="#fed7d7")
        self.tree.tag_configure("early", background="#fefcbf")
        self.tree.tag_configure("absent", background="#e2e8f0")
        self.tree.tag_configure("normal", background="#c6f6d5")
        
        # 状态栏
        self.status = tk.Label(root, text="就绪 - 请导入打卡记录CSV文件",
                               font=(CHINESE_FONT, 10), bg="#f0f4f8", fg="#718096")
        self.status.pack(pady=5)
        
        # 自动加载示例数据
        sample = os.path.join(os.path.dirname(os.path.abspath(__file__)), "attendance.csv")
        if os.path.exists(sample):
            self.load_csv_file(sample)
    
    def load_csv(self):
        path = filedialog.askopenfilename(filetypes=[("CSV文件", "*.csv")])
        if path:
            self.load_csv_file(path)
    
    def load_csv_file(self, path):
        """读取CSV并分析考勤状态"""
        self.tree.delete(*self.tree.get_children())
        self.records = []
        try:
            with open(path, "r", encoding="utf-8-sig") as f:
                reader = csv.DictReader(f)
                for row in reader:
                    name = row.get("姓名", "")
                    date = row.get("日期", "")
                    clock_in = row.get("上班打卡", "")
                    clock_out = row.get("下班打卡", "")
                    # 计算工时
                    hours = self.calc_hours(clock_in, clock_out)
                    # 判断状态
                    status = self.check_status(clock_in, clock_out)

💡 适用场景

HR考勤管理、行政部门数据统计、企业人事管理

标签:

实例下载地址

员工考勤统计与异常标记工具:导入打卡记录、自动计算工时、迟到早退缺卡标记、月度汇总导出Excel

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享!

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警