lmomfe

导航

 

一、项目前言

本系列前9篇我们掌握了Python文件操作、Excel/Word自动化、邮件推送、定时任务、数据清洗、可视化、文件归档能力。本文将所有技术整合为完整企业级项目,搭建一套可直接落地的职场全自动办公系统,实现:数据采集→数据清洗→报表生成→可视化出图→邮件推送→文件归档备份全流程无人值守。

二、项目整体流程

1、自动采集办公数据 → 2、批量清洗脏数据 → 3、生成标准Excel报表 → 4、自动生成数据分析图表 → 5、定时邮件推送汇报 → 6、文件自动归档备份 → 7、清理过期临时文件

三、完整整合项目代码

# 导入所有依赖库
import os
import time
import shutil
import schedule
import pandas as pd
import matplotlib.pyplot as plt
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

# ===================== 1. 全局配置 =====================
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
SENDER = "你的邮箱@qq.com"
AUTH_CODE = "你的授权码"
RECEIVER = "接收邮箱@qq.com"
BASE_PATH = "./自动办公文件"

# 创建基础文件夹
if not os.path.exists(BASE_PATH):
    os.mkdir(BASE_PATH)

# ===================== 2. 数据清洗模块 =====================
def data_clean():
    # 读取原始数据
    df = pd.read_excel("原始办公数据.xlsx")
    # 去重、清空空值、过滤异常数据
    df = df.drop_duplicates()
    df = df.dropna(thresh=3)
    df["部门"] = df["部门"].fillna("未知部门")
    df["薪资"] = df["薪资"].fillna(0)
    df = df[df["薪资"] > 0]
    # 导出清洗后数据
    clean_file = os.path.join(BASE_PATH, "清洗后数据.xlsx")
    df.to_excel(clean_file, index=False)
    print("数据清洗完成!")
    return df, clean_file

# ===================== 3. 可视化图表生成模块 =====================
def create_chart(df):
    # 部门薪资柱状图
    dept_salary = df.groupby("部门")["薪资"].mean()
    plt.figure(figsize=(10, 6))
    dept_salary.plot(kind="bar", color="#1f77b4")
    plt.title("部门平均薪资统计")
    chart_path = os.path.join(BASE_PATH, "薪资统计图表.png")
    plt.savefig(chart_path, dpi=300)
    plt.close()
    print("数据分析图表生成完成!")
    return chart_path

# ===================== 4. 邮件推送模块 =====================
def send_email(file_path, chart_path):
    msg = MIMEMultipart()
    msg["From"] = Header("职场自动化办公系统")
    msg["To"] = Header("部门负责人")
    msg["Subject"] = Header(f"{time.strftime('%Y年%m月%d日')}自动化工作报表")

    # 邮件正文
    text = MIMEText("您好,今日自动化生成的工作报表及数据分析图表详见附件,请查收!", "plain", "utf-8")
    msg.attach(text)

    # 添加报表附件
    with open(file_path, "rb") as f:
        attach1 = MIMEApplication(f.read(), _subtype="xlsx")
        attach1.add_header("Content-Disposition", "attachment", filename="月度报表.xlsx")
        msg.attach(attach1)

    # 发送邮件
    smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
    smtp.login(SENDER, AUTH_CODE)
    smtp.sendmail(SENDER, RECEIVER, msg.as_string())
    smtp.quit()
    print("报表邮件推送成功!")

# ===================== 5. 文件归档与清理模块 =====================
def file_backup_clean():
    # 文件归档压缩
    zip_name = os.path.join(BASE_PATH, f"月度归档_{time.strftime('%Y%m')}")
    shutil.make_archive(zip_name, "zip", BASE_PATH)
    # 清理7天前临时文件
    def clean_old(path, day=7):
        now = time.time()
        for file in os.listdir(path):
            f_path = os.path.join(path, file)
            if os.path.getmtime(f_path) < now - day*86400:
                if os.path.isfile(f_path):
                    os.remove(f_path)
    clean_old(BASE_PATH)
    print("文件归档清理完成!")

# ===================== 6. 整合主任务 =====================
def auto_office_main():
    print("===== 自动化办公任务启动 =====")
    df, file = data_clean()
    chart = create_chart(df)
    send_email(file, chart)
    file_backup_clean()
    print("===== 全流程办公任务执行完毕 =====")

# ===================== 7. 定时部署 =====================
if __name__ == "__main__":
    # 每日18点自动执行全流程任务
    schedule.every().day.at("18:00").do(auto_office_main)
    print("职场全自动办公系统已启动,等待定时执行...")
    while True:
        schedule.run_pending()
        time.sleep(1)

四、项目部署与优化

1、本地部署:直接运行脚本,电脑保持开机即可每日自动执行;
2、服务器部署:上传至云服务器,实现24小时无人值守运行;
3、拓展功能:可新增日志记录、异常告警、多部门报表拆分等功能;
4、适配性:所有模块可单独拆分使用,适配不同职场办公场景。
posted on 2026-07-20 22:28  lmomfe  阅读(2)  评论(0)    收藏  举报