Python 自动化办公实战:从基础操作到高效批处理

148 阅读5分钟

一、前言

在现代办公中,重复性高、耗时长的任务司空见惯,如处理 Excel 报表、批量重命名文件、生成邮件通知、数据清洗等。借助 Python 的强大能力,我们可以将这些手动操作变成自动化流程,大幅提升效率。

本文将从自动化办公的常见场景出发,结合代码实战,介绍如何使用 Python 执行自动化任务,包括 Excel 表格操作、文件处理、邮件发送、Word 文档生成、PDF 处理、图表可视化等。文章适合对 Python 有一定基础的办公人员、数据分析师、行政人员或开发者参考使用。

二、Python 办公自动化生态简介

常用库汇总

功能

推荐库

Excel 读写

openpyxl、pandas、xlrd

Word 文档生成

python-docx

PDF 操作

PyPDF2、pdfplumber

邮件发送

smtplib、email

文件系统操作

os、shutil、pathlib

时间日期处理

datetime、time

自动化桌面控制

pyautogui

图表生成

matplotlib、seaborn、openpyxl

三、Excel 报表自动处理

1. 安装依赖

bash复制编辑pip install openpyxl pandas

2. 读取和写入 Excel 文件

python复制编辑import openpyxl

# 创建并写入
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "销售报表"

ws.append(["姓名", "部门", "销售额"])
ws.append(["小李", "销售部", 12000])
ws.append(["小王", "市场部", 18000])
wb.save("报表.xlsx")

3. 使用 Pandas 快速处理 Excel

python复制编辑import pandas as pd

df = pd.read_excel("报表.xlsx")
df["销售额"] = df["销售额"] * 1.1  # 增加 10% 奖金
df.to_excel("新报表.xlsx", index=False)

四、批量重命名文件和移动文件

1. 自动重命名文件

python复制编辑import os

folder = "D:/合同资料"
for index, filename in enumerate(os.listdir(folder), 1):
    if filename.endswith(".docx"):
        new_name = f"合同_{index}.docx"
        os.rename(os.path.join(folder, filename), os.path.join(folder, new_name))

2. 移动文件到指定目录

python复制编辑import shutil

src_dir = "D:/源文件夹"
dst_dir = "D:/归档文件夹"

for file in os.listdir(src_dir):
    if file.endswith(".xlsx"):
        shutil.move(os.path.join(src_dir, file), os.path.join(dst_dir, file))

五、邮件自动发送

1. 发送简单邮件

python复制编辑import smtplib
from email.mime.text import MIMEText

msg = MIMEText("你好,这是系统自动发送的测试邮件")
msg["Subject"] = "Python 自动邮件"
msg["From"] = "sender@example.com"
msg["To"] = "receiver@example.com"

server = smtplib.SMTP_SSL("smtp.qq.com", 465)
server.login("sender@example.com", "授权码")
server.send_message(msg)
server.quit()

注意:QQ/163 邮箱需开启“SMTP”服务,并获取授权码登录。

2. 附件邮件发送

python复制编辑from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

msg = MIMEMultipart()
msg["Subject"] = "附带报告的邮件"
msg["From"] = "sender@example.com"
msg["To"] = "receiver@example.com"

msg.attach(MIMEText("请查收附件"))

with open("报表.xlsx", "rb") as f:
    part = MIMEBase("application", "octet-stream")
    part.set_payload(f.read())
    encoders.encode_base64(part)
    part.add_header("Content-Disposition", "attachment", filename="报表.xlsx")
    msg.attach(part)

server = smtplib.SMTP_SSL("smtp.qq.com", 465)
server.login("sender@example.com", "授权码")
server.send_message(msg)
server.quit()

六、Word 文档自动生成合同/报告

1. 安装与使用 python-docx

bash复制编辑pip install python-docx

2. 自动生成合同文档

python复制编辑from docx import Document

doc = Document()
doc.add_heading("项目合作协议", 0)
doc.add_paragraph("甲方:ABC 公司")
doc.add_paragraph("乙方:XYZ 工作室")
doc.add_paragraph("本协议用于双方达成合作共识,内容如下:")

doc.add_paragraph("1. 合作周期:2025年1月至2025年12月")
doc.add_paragraph("2. 支付方式:每月结算")
doc.save("项目合作协议.docx")

七、PDF 批量提取与合并

1. 读取 PDF 内容

bash复制编辑pip install pdfplumber


python复制编辑import pdfplumber

with pdfplumber.open("文件.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(text)

2. 合并多个 PDF 文件

python复制编辑from PyPDF2 import PdfMerger

merger = PdfMerger()
files = ["合同1.pdf", "合同2.pdf"]

for f in files:
    merger.append(f)

merger.write("合并合同.pdf")
merger.close()

八、桌面自动化控制(如批量截图、鼠标点击)

1. 安装 pyautogui

bash复制编辑pip install pyautogui

2. 示例:自动截图并保存

python复制编辑import pyautogui

screenshot = pyautogui.screenshot()
screenshot.save("截图.png")

3. 模拟鼠标和键盘操作

python复制编辑import pyautogui

pyautogui.moveTo(100, 200)    # 移动到坐标
pyautogui.click()             # 单击
pyautogui.write("自动输入文字")  # 键盘输入
pyautogui.press("enter")      # 回车

九、数据可视化与图表插入 Excel

1. 生成图表并保存

python复制编辑import matplotlib.pyplot as plt

names = ["一月", "二月", "三月"]
values = [1000, 1500, 1800]

plt.bar(names, values)
plt.title("季度销售额")
plt.savefig("chart.png")

2. 插入图表到 Excel 表格

python复制编辑from openpyxl import Workbook
from openpyxl.drawing.image import Image

wb = Workbook()
ws = wb.active
ws.title = "图表"

img = Image("chart.png")
ws.add_image(img, "A1")
wb.save("带图报表.xlsx")

十、自动化办公综合项目:批量生成员工工资条并发送邮件

1. 项目需求

  • 从 Excel 表读取员工信息(姓名、邮箱、工资)

  • 自动生成工资单(Word 或 PDF)

  • 自动发送至对应邮箱

2. 实现步骤简述

text复制编辑1. 使用 pandas 读取员工 Excel 表格
2. 遍历数据,为每个员工创建工资条 Word 文件
3. 将 Word 转 PDF(可选使用 win32com)
4. 邮件中附上工资条 PDF 自动发送

3. 扩展建议

  • 将项目打包成 GUI 应用(使用 PyQt、Tkinter)

  • 结合计划任务每日自动运行

  • 接入钉钉/企业微信通知接口

十一、办公自动化注意事项

  1. 权限控制:尤其在批量发送邮件或访问系统文件时需确保权限合法。

  2. 稳定性:建议加上异常处理、重试机制。

  3. 数据备份:操作文件或数据库前做好备份。

  4. 定时执行:可用 Windows 任务计划或 APScheduler 实现自动运行。

十二、总结

Python 办公自动化并不是程序员专属技能,它是每个办公人员都能掌握的“效率工具箱”。通过本篇文章你已掌握:

  • Excel、Word、PDF 的自动处理方法

  • 文件管理与批处理技巧

  • 邮件发送与附件处理

  • 图表生成与数据可视化

  • 实战项目组合应用方式

下一步你可以尝试封装脚本为应用程序(.exe),或配合任务调度实现无人工干预的每日办公自动流程。