Python 自动化办公完全指南:30行代码告别Excel/Word/PDF重复劳动

你有没有这种经历——每个月最后三天,被领导扔…

你有没有这种经历——每个月最后三天,被领导扔过来几十个Excel报表,要求”汇总一下”;或者下周要发30份合同,你还在手动复制粘贴改名字和金额,改到眼花缭乱,一不小心把张总的工资填到李总头上。

别问我怎么知道的,我当年在公司做财务助理的时候,每个月25号到月底就是噩梦。直到我用Python把这套流程全部自动化了,原来需要两天的活,现在跑个脚本,泡杯咖啡的功夫搞定。

今天不扯虚的,直接上干货:用Python把Excel、Word、PDF这三座大山一次铲平。全程真实代码,复制就能用。

一、环境准备:装好这三个库就够了

别被”Python”两个字吓到。你不需要成为程序员,只要会装软件、会复制粘贴就行。

1.1 安装Python

python.org下载最新版(建议3.10+),安装时记得勾选 “Add Python to PATH”。装完在命令行验证:

python --version
# 输出: Python 3.x.x

1.2 安装必备库

打开命令行(CMD或终端),一行命令安装全部:

pip install openpyxl python-docx PyPDF2

三个库各自负责什么:

库名用途支持格式
openpyxl读写Excel(.xlsx)数据、公式、图表、样式
python-docx读写Word(.docx)段落、表格、页眉页脚
PyPDF2操作PDF合并、拆分、提取文字

一句话结论:装这三个你就覆盖了95%的办公自动化场景。不需要装什么巨型的Pandas或NumPy,除非你要搞数据分析。

二、Excel自动化:批量合并、筛选、报表生成

场景1:把文件夹里所有Excel合并成一个

我最常遇到的情况是:各个部门发来的日报/周报,格式一模一样,要汇总成一张总表。以前我得一个一个打开复制粘贴,30个文件能干一上午。

现在用这个脚本:

import openpyxl, os, glob

# 要合并的所有Excel文件
files = glob.glob("报表文件夹/*.xlsx")
output_wb = openpyxl.Workbook()
output_ws = output_wb.active
output_ws.title = "汇总"

first_file = True
for f in files:
    wb = openpyxl.load_workbook(f)
    ws = wb.active
    for row in ws.iter_rows(values_only=True):
        # 从第二个文件开始跳过表头
        if first_file:
            output_ws.append(row)
        else:
            output_ws.append(row)
    wb.close()
    first_file = False

output_wb.save("汇总结果.xlsx")
output_wb.close()
print(f"合并完成!共处理 {len(files)} 个文件")

就12行代码,把30个文件合并成一个。我第一次跑通的时候坐在工位上笑了半天——之前两天的工作量,变成3秒出结果。

场景2:按条件筛选并生成新表

假设你有一份全国销售数据,想按”华南区”单独拉一张表发给负责人:

import openpyxl

wb = openpyxl.load_workbook("销售数据.xlsx")
ws = wb.active
new_wb = openpyxl.Workbook()
new_ws = new_wb.active

for row in ws.iter_rows(values_only=True):
    if row[0] == "华南区":  # 假设A列是区域
        new_ws.append(row)

new_wb.save("华南区销售数据.xlsx")
new_wb.close()
wb.close()

改一下条件判断,就能变成”销售额大于100万”、”日期在本月”、”客户等级为VIP”——你想怎么筛就怎么筛,5行代码搞定。

三、Word自动化:批量生成合同/通知/信函

场景:给30个客户发续费通知,每人名字、金额、日期不一样

手工做法:复制粘贴改内容 → 打印 → 30份干一天。

Python做法:先准备一个模板文件,把要替换的地方用{变量名}标记,然后跑脚本替换。

模板Word里写:

尊敬的 {客户名称}:

您的服务合同将于 {到期日期} 到期,续费金额为 {金额} 元。
请于 {截止日期} 前完成续费,以免影响正常使用。

然后运行这个脚本:

from docx import Document
import pandas as pd  # 需要pip install pandas

# 客户信息表(也可以用Excel/CSV)
客户列表 = [
    {"客户名称": "张三", "到期日期": "2026-08-15", "金额": 299, "截止日期": "2026-08-01"},
    {"客户名称": "李四", "到期日期": "2026-08-20", "金额": 499, "截止日期": "2026-08-05"},
    {"客户名称": "王五", "到期日期": "2026-09-01", "金额": 199, "截止日期": "2026-08-15"},
]

for 客户 in 客户列表:
    doc = Document("续费通知模板.docx")
    for p in doc.paragraphs:
        for key, val in 客户.items():
            if f"{{{key}}}" in p.text:
                p.text = p.text.replace(f"{{{key}}}", str(val))
    doc.save(f"续费通知-{客户['客户名称']}.docx")
    print(f"已生成:续费通知-{客户['客户名称']}.docx")

跑完你会发现桌面上多了30个Word文件,每个对应一个客户,名字金额全对。从半小时缩到3秒。

四、PDF操作:合并、拆分、提取不想用付费软件

PDF是办公中最烦人的格式。很多在线工具要上传服务器,隐私问题谁说得清?本地Python一把梭:

合并多个PDF

from PyPDF2 import PdfMerger
import glob

merger = PdfMerger()
for pdf in glob.glob("素材/*.pdf"):
    merger.append(pdf)

merger.write("合并结果.pdf")
merger.close()
print("PDF合并完成!")

提取PDF中所有文字

from PyPDF2 import PdfReader

reader = PdfReader("合同文件.pdf")
text = ""
for page in reader.pages:
    text += page.extract_text()

with open("合同文字版.txt", "w", encoding="utf-8") as f:
    f.write(text)

print(f"提取完成,共 {len(reader.pages)} 页")

这些操作如果用Adobe Acrobat,一年订阅费上千。用Python一分钱不花,而且不经过任何第三方服务器,数据安全拉满。

五、踩坑与避坑指南

坑1:Excel 格式乱掉

openpyxl写入时不会自动保留源文件的格式。如果对格式有要求(比如合并单元格、条件格式),建议先把数据整理好,用模板Excel写入,而不是从零创建。

坑2:Word模板替换时变量名被拆分

Word在保存时会把{变量名}拆到不同的XML段落元素里。如果替换不生效,试试把模板变量单独放一行,不要和其他文字混在一起。

坑3:PyPDF2 对扫描件PDF无效

PyPDF2只能提取文字型PDF的内容。如果是扫描件(图片式PDF),需要OCR工具配合,比如 Tesseract OCR + pdf2image。这个我下次专门写一篇。

坑4:文件路径含中文报错

Windows下中文路径偶尔报编码错误。建议:所有文件路径用英文命名,或者脚本开头加 # -*- coding: utf-8 -*-

六、总结:30行代码改变你的办公方式

上面所有脚本的核心代码加起来不超过30行。但就是这30行代码,能把一个职场人每月从几十小时的重复劳动里解放出来

我的学习路线建议:

  1. 先玩openpyxl——Excel最常用,入门最简单,见效最快
  2. 再学python-docx——生成报告、合同、批量通知,实用场景多
  3. 最后攻克PyPDF2——PDF操作是刚需,但坑多一点

先把上面这几段代码复制到本地跑通,跑通之后你自然会知道自己还需要什么功能。去Google/GitHub搜一搜就能找到现成的代码改一改。

下期预告:WPS和Office其实都支持JSA宏(JavaScript宏),不用装Python也能自动化——这个玩法更轻量,值得关注。

本教程来自IT大叔的工具箱,专注VPS评测、办公模板、在线神器、本地AI落地。觉得有用的话,收藏分享给你那个还在手动复制粘贴的同事。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注