一、引言
现代办公中,我们经常面对大量重复性工作:复制粘贴数据、整理 Excel 报表、批量重命名文件、生成 Word 合同......这些工作虽然不难,但却非常消耗时间和精力。而 Python 正是解决这些问题的利器。
本篇文章将通过多个实战案例,带你全面了解如何使用 Python 进行自动化办公,涉及 Excel、Word、PDF、文件操作和邮件发送等领域,帮助你大幅提高工作效率。
二、自动处理 Excel 报表
1. 读取 Excel 文件
使用 openpyxl
读取 Excel 数据:
ini
python
复制编辑
from openpyxl import load_workbook
wb = load_workbook("员工考勤.xlsx")
sheet = wb.active
for row in sheet.iter_rows(min_row=2, values_only=True):
print(row)
openpyxl
适合处理 .xlsx
文件,常用于读写数据、修改单元格、插入公式等。
2. 统计打卡次数并输出
ini
python
复制编辑
from openpyxl import Workbook
output = Workbook()
sheet_out = output.active
sheet_out.append(["姓名", "打卡天数"])
for row in sheet.iter_rows(min_row=2, values_only=True):
name = row[0]
days = sum(1 for cell in row[1:] if cell == "√")
sheet_out.append([name, days])
output.save("考勤统计.xlsx")
三、Word 合同批量生成
你是否曾手动为几十位客户制作合同?使用 python-docx
可以一键生成。
1. 模板内容如下(template.docx):
复制编辑
尊敬的 {{客户姓名}}:
根据我们的合作协议,您将获得编号为 {{合同编号}} 的合同,内容如下......
2. 替换模板并保存新文件
arduino
python
复制编辑
from docx import Document
def generate_contract(name, contract_id):
doc = Document("template.docx")
for p in doc.paragraphs:
p.text = p.text.replace("{{客户姓名}}", name)
p.text = p.text.replace("{{合同编号}}", contract_id)
doc.save(f"{name}_合同.docx")
generate_contract("张三", "HT202501")
结合 Excel 或数据库,可以实现批量生成合同。
四、自动发送电子邮件
用 smtplib
和 email
模块,可以一键群发邮件。
1. 简单邮件发送
python
python
复制编辑
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg['Subject'] = '本月报表'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
msg.set_content("您好,附件是本月报表,请查收。")
with open("report.xlsx", "rb") as f:
msg.add_attachment(f.read(), maintype='application', subtype='octet-stream', filename='report.xlsx')
with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp:
smtp.login("[email protected]", "your_password")
smtp.send_message(msg)
2. 多人群发
配合 Excel 批量读取邮箱名单,循环发送即可实现自动邮件群发。
五、文件管理自动化
Python 的 os
和 shutil
模块可以高效处理文件移动、重命名、删除等操作。
1. 批量重命名文件
lua
python
复制编辑
import os
folder = "合同文件"
for i, filename in enumerate(os.listdir(folder), start=1):
ext = os.path.splitext(filename)[1]
new_name = f"合同_{i:03}{ext}"
os.rename(os.path.join(folder, filename), os.path.join(folder, new_name))
2. 按后缀分类文件
ini
python
复制编辑
import shutil
source = "下载文件"
for file in os.listdir(source):
ext = file.split('.')[-1]
folder = os.path.join(source, ext.upper())
os.makedirs(folder, exist_ok=True)
shutil.move(os.path.join(source, file), os.path.join(folder, file))
六、PDF 自动处理
通过 PyPDF2
实现 PDF 合并、拆分、提取页码等功能。
1. 合并多个 PDF 文件
scss
python
复制编辑
from PyPDF2 import PdfMerger
merger = PdfMerger()
files = ['a.pdf', 'b.pdf', 'c.pdf']
for file in files:
merger.append(file)
merger.write("merged.pdf")
merger.close()
2. 提取某页 PDF
python
python
复制编辑
from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader("sample.pdf")
writer = PdfWriter()
writer.add_page(reader.pages[2]) # 第3页
with open("extracted_page.pdf", "wb") as f:
writer.write(f)
七、自动化办公项目综合示例:日报自动发送器
项目目标
- 读取 Excel 日报内容
- 生成 Word 文档并转为 PDF
- 自动命名为"日报_日期.pdf"
- 自动通过邮件发送给上级
技术要点
openpyxl
:读取数据docx
+docx2pdf
:生成 PDF 报告email
+smtplib
:发送邮件
小提示:
docx2pdf
依赖 Word 和 Windows,可替代方案为 PDF 模板工具reportlab
。
八、图形化办公自动化工具开发
你可以使用 Tkinter
结合以上模块,开发带图形界面的自动办公工具。例如:
- Word 模板生成工具
- 批量文件分类器
- PDF 转换器
示例代码:
ini
python
复制编辑
import tkinter as tk
from tkinter import filedialog
def select_file():
file = filedialog.askopenfilename()
label.config(text=file)
root = tk.Tk()
tk.Button(root, text="选择文件", command=select_file).pack()
label = tk.Label(root, text="未选择文件")
label.pack()
root.mainloop()
九、常见办公模块推荐
模块 | 用途 |
---|---|
openpyxl |
Excel 表格读写 |
python-docx |
Word 文档处理 |
smtplib |
发送邮件 |
PyPDF2 |
PDF 合并/拆分/读取 |
shutil |
文件拷贝、移动、重命名 |
tkinter |
图形界面开发 |
schedule |
定时执行脚本 |
os |
文件目录操作 |
十、结语
办公自动化是 Python 最具实用价值的场景之一。只要掌握几个基础模块,结合实际业务场景进行应用,就可以构建出高效、省时的自动化工具,大大减少重复劳动。
本篇文章展示了多个典型的办公自动化实战应用,你可以据此拓展更多功能,如文件监控、表单录入、数据清洗等,逐步将 Python 融入日常办公流程中,实现从"打工人"向"打码人"的华丽转变。