一、为什么要学“Python 自动化办公”?
你是否遇到过以下情况:
- 每天早上打开邮箱,要手动下载十几个 Excel 附件?
- 一份数据要从 10 张表复制粘贴到汇总表里?
- 上司催你每周四交 PPT 报告,但你还在用手工截图、制图?
如果你还在重复这些工作,那恭喜你——你最适合学 Python 自动化办公!
它能帮你:
- 自动整理 Excel 数据、批量统计生成报表
- 批量处理文件(重命名、分类、备份)
- 自动生成 Word、PDF、PPT 文档
- 每天定时发邮件、微信通知或短信提醒
二、Python 自动化办公可以做什么?
类型 | 实用功能示例 |
Excel 自动化 | 批量合并、汇总、计算、格式调整 |
Word 文档自动化 | 自动填充模板合同、生成公文 |
PPT 自动化 | 一键生成周报图表、图示 |
邮件自动发送 | 批量发邮件+附件+定时 |
PDF 操作 | 合并、拆分、加密、提取文本 |
浏览器自动化 | 模拟登录网站、提交表单、爬取数据 |
文件管理 | 文件批量命名、分类、转移 |
三、核心库介绍:这些你必须会!
功能 | 推荐库 |
操作 Excel |
|
Word 模板 |
|
PPT 制作 |
|
发送邮件 |
|
操作文件 |
|
浏览器模拟 |
|
定时任务 |
|
四、实战一:批量合并 Excel 表格
需求:
每月财务发来多个表,要把它们合并成一个大表。
示例代码:
import pandas as pd
import os
folder = 'data'
all_data = pd.DataFrame()
for file in os.listdir(folder):
if file.endswith('.xlsx'):
df = pd.read_excel(os.path.join(folder, file))
all_data = pd.concat([all_data, df], ignore_index=True)
all_data.to_excel('汇总表.xlsx', index=False)
✔ 实现自动读取每个文件,并合并为总表。
五、实战二:自动生成 Word 合同
需求:
为每位客户生成一份 Word 合同,只需更换名字、金额。
示例代码:
from docx import Document
def generate_contract(name, amount):
doc = Document("合同模板.docx")
for para in doc.paragraphs:
para.text = para.text.replace("{客户名}", name)
para.text = para.text.replace("{金额}", str(amount))
doc.save(f"{name}_合同.docx")
generate_contract("张三", 10000)
✔ 实现“批量合同生成器”。
六、实战三:一键生成图表型 PPT 报告
from pptx import Presentation
from pptx.chart.data import CategoryChartData
from pptx.util import Inches
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
title = slide.shapes.title
title.text = "销售趋势分析"
chart_data = CategoryChartData()
chart_data.categories = ['一月', '二月', '三月']
chart_data.add_series('销售额', (150, 200, 250))
x, y, cx, cy = Inches(2), Inches(2), Inches(5), Inches(3)
slide.shapes.add_chart(5, x, y, cx, cy, chart_data)
prs.save("周报.pptx")
✔ 自动生成带图表的汇报幻灯片。
七、实战四:自动发邮件 + 附件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
sender = 'you@example.com'
receiver = 'boss@example.com'
password = '你的授权码'
msg = MIMEMultipart()
msg['Subject'] = '本周销售数据'
msg['From'] = sender
msg['To'] = receiver
msg.attach(MIMEText("您好,附件为本周销售数据,请查收。"))
with open("周报.xlsx", 'rb') as f:
part = MIMEApplication(f.read(), Name="周报.xlsx")
part['Content-Disposition'] = 'attachment; filename="周报.xlsx"'
msg.attach(part)
server = smtplib.SMTP_SSL('smtp.example.com', 465)
server.login(sender, password)
server.send_message(msg)
server.quit()
✔ 每周可定时发送邮件,替代 Outlook 手动操作。
八、实战五:自动登录系统下载报表(Selenium)
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://某报表系统.com/login")
driver.find_element(By.ID, "username").send_keys("admin")
driver.find_element(By.ID, "password").send_keys("123456")
driver.find_element(By.ID, "submit").click()
# 模拟点击下载报表
driver.find_element(By.LINK_TEXT, "下载本周数据").click()
✔ 可用于政企系统、OA 系统的自动操作。
九、定时执行任务
import schedule
import time
def job():
print("执行定时任务:发送日报")
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
✔ 可用于“每天 9 点发日报、每周五发周报”等场景。
十、自动化办公项目清单(初级-进阶)
难度 | 项目名称 | 技术点 |
🌱 初级 | 批量合并 Excel | pandas |
🌿 初级 | 批量重命名文件 | os |
🌲 中级 | 自动生成合同 | docx |
🌳 中级 | 自动发送日报邮件 | smtplib |
🏔 高级 | 企业系统自动爬取报表 | selenium |
🚀 高级 | Web 可视化自动工具(如 Streamlit) | 综合 |
十一、实用技巧锦囊
os.path.join()
保证文件路径跨平台兼容- 多文件操作用
glob.glob()
简洁快捷 - Excel 自动计算用
openpyxl.formula
- 浏览器操作慢时加
time.sleep()
或WebDriverWait
- 邮件用企业授权码,不建议直接明文密码
- 定时执行可结合 Windows 任务计划/定时脚本运行
十二、推荐学习资料
类型 | 推荐 |
教程 | 菜鸟教程、Bilibili Python 办公 |
书籍 | 《Python 自动办公实战》、《Python 编程快速上手》 |
社区 | 简书、知乎、CSDN“Python 自动化”板块 |
GitHub 项目 |
|
十三、自动化办公 vs 传统办公
维度 | 传统方式 | Python 自动化方式 |
处理速度 | 慢 | 快 |
错误率 | 高 | 低(可测试) |
成本 | 人力密集 | 初期学习成本,一次开发长期复用 |
扩展性 | 差 | 好,可集成更多功能 |
十四、常见问题 FAQ
Q:我不会编程,适合学吗?
A:Python 是最适合小白入门的语言,只需掌握一些基础,就能做很多事。
Q:Python 安装难吗?
A:不难,推荐用 Anaconda,一键安装环境 + 包管理。
Q:会不会太慢?每天能节省时间吗?
A:写一个脚本可能花你 1 小时,但未来每次执行只要 1 秒。长期看,省下的是天文数字。
十五、结语:你的价值 ≠ 重复劳动
你花 2 小时复制表格、生成报告、调格式……这些事机器几秒钟就能完成。
掌握 Python 自动化办公,你就是团队里效率最高的人,甚至可以帮助整个部门提高产出。
所以,下一次你要:
✅ 整理 Excel 表
✅ 生成合同
✅ 汇报图表
✅ 发群体邮件
✅ 系统报表自动提取
试试让 Python 帮你代劳。