python教程自动化办公实战:Excel处理与邮件发送脚本

admin python教程 4


是不是很多朋友每天都在重复这些工作?对着 Excel 表格一遍遍筛选数据、计算总和,改个格式要点几十次鼠标;月底发报表邮件,要手动添加附件、写收件人,稍不注意就发错人?其实啊,这些重复又耗时的工作,用 Python 写个简单脚本就能自动完成。今天兔子哥就带大家实战两个最常用的自动化场景:Excel 批量处理和自动发送邮件,新手跟着练,每天能省出两小时摸鱼时间,一起往下看吧!

一、为啥要用 Python 做自动化办公?这些痛点你中了几个?


核心问题:Excel 和邮箱本身就能用,为啥还要学 Python 脚本?
手动办公时,这些问题是不是经常困扰你:
  • 表格数据太多,筛选、排序半天没反应,一不小心还删错行
  • 每月做报表要重复计算相同公式,复制粘贴到怀疑人生
  • 发邮件时要一个个填收件人、写主题、加附件,发完还得回头检查
  • 数据格式乱七八糟,统一格式要调半天单元格

Python 就像一个 “超级助理”,能把这些重复步骤写成脚本,点一下运行,数据自动处理、邮件自动发送,还不会出错。兔子哥之前帮同事写了个 Excel 汇总脚本,把他两小时的工作量压缩到 10 秒,现在他见人就夸 Python 好用!

二、Excel 处理自动化:用 Pandas 解放双手


核心问题:Excel 处理的哪些场景最适合自动化?怎么用 Python 实现?
Excel 自动化最常用的场景:数据清洗、格式统一、批量计算、多表汇总。用 Pandas 库就能轻松搞定,新手不用学复杂函数,会调用几个基础方法就行。

1. 准备工作:安装必要的库


首先要安装处理 Excel 的库,打开命令提示符输入:
plaintext
pip install pandas openpyxl

  • pandas:处理表格数据的核心库
  • openpyxl:支持读取和写入 Excel 文件(.xlsx 格式)

2. 实战案例 1:批量清洗销售数据


假设你有一份销售数据,里面有缺失值、格式错误,需要清洗后计算总和。手动做要半小时,用 Python3 分钟搞定。
步骤分解:
python
import pandas as pd# 1. 读取Excel文件(文件要和代码放同一文件夹)data = pd.read_excel("销售数据.xlsx", engine="openpyxl")# 2. 处理缺失值:用0填充销售额的空值data["销售额"] = data["销售额"].fillna(0)# 3. 修正格式错误:把“数量”列的文本转成数字data["数量"] = pd.to_numeric(data["数量"], errors="coerce")  # 无法转换的设为NaNdata["数量"] = data["数量"].fillna(1)  # 缺省数量设为1# 4. 新增“总金额”列:数量×单价data["总金额"] = data["数量"] * data["单价"]# 5. 按地区分组,计算各地区总销售额region_total = data.groupby("地区")["总金额"].sum().reset_index()# 6. 保存处理后的结果到新Excelwith pd.ExcelWriter("清洗后销售数据.xlsx", engine="openpyxl") as writer:data.to_excel(writer, sheet_name="清洗后数据", index=False)region_total.to_excel(writer, sheet_name="地区汇总", index=False)print("处理完成!结果已保存到新文件")

运行这段代码,杂乱的原始数据会自动清洗干净,还会生成地区汇总表,比手动操作快 10 倍!

3. 常用 Excel 操作方法(新手必记)


操作需求Pandas 方法作用
读取 Excelpd.read_excel ("文件.xlsx")加载表格数据
处理缺失值data.fillna(0)用 0 填充空值
数据筛选data [data ["销售额"] > 1000]筛选销售额超 1000 的数据
分组计算data.groupby ("列名").sum ()按列分组求和
保存到 Exceldata.to_excel ("结果.xlsx")导出处理后的数据

三、邮件发送自动化:一键群发报表不用愁


核心问题:怎么让 Python 自动发邮件?带附件、抄送多人都能实现吗?
每月发报表、通知邮件,手动发容易漏发错发。用 Python 的 smtplib 和 email 库,能自动加附件、写内容、发给多个人,还能定时发送。

1. 准备工作:开启邮箱 SMTP 服务


以 QQ 邮箱为例,需要先开启 SMTP 服务(其他邮箱步骤类似):
  • 登录 QQ 邮箱→设置→账户→开启 “POP3/SMTP 服务”
  • 生成授权码(不是邮箱密码,保存好这个码,代码里要用)

2. 实战案例 2:自动发送带 Excel 附件的邮件


假设月底要给领导和同事发销售报表,带 “清洗后销售数据.xlsx” 附件,主题和内容固定。
步骤分解:
python
import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.base import MIMEBasefrom email import encoders# 1. 设置邮件基本信息sender = "你的邮箱@qq.com"  # 发件人邮箱password = "你的授权码"  # 刚才生成的授权码,不是密码receivers = ["领导邮箱@qq.com", "同事邮箱@163.com"]  # 收件人列表cc = ["抄送人邮箱@qq.com"]  # 抄送人(可选)# 2. 创建邮件对象msg = MIMEMultipart()msg["From"] = sender  # 发件人msg["To"] = ",".join(receivers)  # 收件人,用逗号分隔msg["Cc"] = ",".join(cc)  # 抄送msg["Subject"] = "【月度报表】8月销售数据汇总"  # 邮件主题# 3. 写邮件正文body = "各位好,附件是8月销售数据清洗后的汇总表,请查收。\n\n祝好!\n兔子哥"msg.attach(MIMEText(body, "plain", "utf-8"))  # 正文内容,utf-8确保中文正常显示# 4. 添加附件(Excel文件)file_path = "清洗后销售数据.xlsx"with open(file_path, "rb") as f:part = MIMEBase("application", "octet-stream")part.set_payload(f.read())encoders.encode_base64(part)  # 编码附件part.add_header("Content-Disposition", f"attachment; filename={file_path}")msg.attach(part)  # 添加到邮件# 5. 发送邮件(QQ邮箱SMTP服务器:smtp.qq.com,端口465)try:server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 连接服务器server.login(sender, password)  # 登录# 发送给收件人和抄送人all_receivers = receivers + ccserver.sendmail(sender, all_receivers, msg.as_string())server.quit()print("邮件发送成功!")except Exception as e:print(f"发送失败:{e}")

运行这段代码,邮件会自动发送到指定邮箱,附件也能正常打开,再也不用手动点点点了!

四、新手避坑指南:这些错误别再犯了!


  1. Excel 读取失败?检查文件路径和格式
    报错 “FileNotFoundError”,要么是文件名写错,要么文件没和代码放同一文件夹;记得用.xlsx 格式,.xls 老格式可能不支持,需要额外安装 xlrd 库。
  2. 邮件发送失败?授权码和服务器别搞错
    密码填错是常见问题,一定要用邮箱的授权码,不是登录密码;不同邮箱的 SMTP 服务器不同,比如 163 邮箱是smtp.163.com,端口也是 465。
  3. 中文乱码?编码格式要设对
    读取 Excel 时加engine="openpyxl",邮件正文用"utf-8"编码,保存 Excel 时别用老格式,这些都能避免中文乱码。
  4. 脚本不会改?先从改参数开始
    新手不用一开始就写代码,把案例里的文件名、邮箱地址、主题换成自己的,运行成功后再慢慢改功能,比如加个新的计算列、多添几个收件人。

五、进阶小技巧:让自动化更实用


  • 定时运行脚本:用 Windows 的 “任务计划程序” 或 Mac 的 “自动化”,设置每周一自动运行报表脚本,不用手动点
  • 批量处理多文件:用os.listdir()获取文件夹里所有 Excel 文件,循环处理,适合需要汇总多个部门数据的场景
  • 加个简单界面:用 tkinter 库加个图形界面,让不会代码的同事也能点按钮运行脚本,成就感拉满

最后跟大家说句实在的,自动化办公不是程序员的专利,普通人学几个基础脚本就能大幅提高效率。兔子哥刚开始写这些脚本时,也经常因为路径错、参数不对调试半天,但成功后看着脚本自动处理数据、发送邮件,那种轻松感真的很舒服。
别害怕代码,这些案例的代码可以直接抄,改改里面的文件名和邮箱就行。先从简单的 Excel 清洗做起,熟练后再试邮件发送,一步步来。学会用 Python 解放双手,把省出的时间用来做更有意义的事,这才是自动化办公的真谛。希望今天的实战案例能帮到你,动手试试吧!

标签: 乱七八糟 提示符

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~