每天上班被重复工作缠得没脾气?Excel 分表手动合并要 1 小时,几十份发票 PDF 逐个重命名到眼花,100 份合同复制粘贴到手指发酸…… 这些机械操作,其实用几行 Python 脚本就能搞定。本文整理 8 个办公高频实战脚本,从数据处理到自动提醒,手把手教你用代码解放双手,把时间花在更有价值的事上。
1. Excel 数据合并:10 秒搞定月度分表汇总
适用场景:每月收到 N 个部门 Excel 分表(如 “销售 1 部.xlsx”“销售 2 部.xlsx”),手动复制粘贴到总表易出错、耗时长。
实战代码:
python
import pandas as pd
from pathlib import Path
# 1. 定义分表存放路径(替换为你的实际路径)
path = Path('D:/报表')
# 2. 批量读取所有Excel并合并,重置行索引避免重复
df = pd.concat(
[pd.read_excel(f) for f in path.glob('*.xlsx')],
ignore_index=True
)
# 3. 保存为总表,不保留默认行索引
df.to_excel('总表.xlsx', index=False)
关键解析:
- Path.glob('*.xlsx'):快速匹配指定文件夹下所有 Excel 文件,比传统os.listdir()更简洁;
- pd.concat():pandas 核心合并函数,直接拼接多个 DataFrame,效率是手动循环读取的 10 倍以上;
- ignore_index=True:解决分表行索引重复问题,合并后数据结构更规整。
注意事项:
需先安装依赖:pip install pandas openpyxl(openpyxl是读取 xlsx 格式的必要库);分表列名需一致,否则会生成空值列。
2. 发票 PDF 批量重命名:自动提取信息命名
适用场景:扫描的发票 PDF 全是 “扫描 0001.pdf”“扫描 0002.pdf”,需按 “发票号_金额” 手动改名,耗时且易混淆。
实战代码:
python
import os, re, fitz # fitz是PyMuPDF库的核心模块
# 遍历发票文件夹下所有文件
for f in os.listdir('发票/'):
# 1. 打开PDF并提取所有页面文本
doc = fitz.open(f'发票/{f}')
text = ''.join(page.get_text() for page in doc)
# 2. 用正则提取发票代码(匹配“发票代码:数字”格式)
code = re.search(r'发票代码[::]\s*(\d+)', text).group(1)
# 3. 提取小写金额(匹配“小写”后带两位小数的数字)
money = re.search(r'小写.*?\d+\.\d{2}', text).group().replace('¥', '')
# 4. 重命名文件
os.rename(f'发票/{f}', f'发票/{code}_{money}元.pdf')
关键解析:
- fitz.get_text():高效提取 PDF 文本,支持扫描清晰的图片型 PDF(需确保文字可识别);
- 正则表达式:[::]匹配中文冒号的两种写法(半角 / 全角),\s*忽略空格,\d+\.\d{2}强制匹配两位小数金额,避免提取错误。
注意事项:
安装依赖:pip install pymupdf;若 PDF 模糊导致文本提取失败,需先优化扫描清晰度。
3. Word 合同批量套打:100 份合同 5 分钟搞定
适用场景:用同一份合同模板,需填入不同甲方名称、金额,手动复制粘贴易漏改、错改。
实战代码:
python
from docx import Document
import pandas as pd
# 1. 读取Excel中的合同信息(含“甲方”“金额”列)
data = pd.read_excel('合同信息.xlsx')
# 2. 加载合同模板
tpl = Document('合同模板.docx')
# 3. 遍历数据逐一生成合同
for _, row in data.iterrows():
doc = Document(tpl) # 每次重新加载模板,避免内容污染
# 替换段落中的占位符(如《甲方名称》《金额》)
for p in doc.paragraphs:
if '《甲方名称》' in p.text:
p.text = p.text.replace('《甲方名称》', row['甲方'])
if '《金额》' in p.text:
p.text = p.text.replace('《金额》', str(row['金额']))
# 保存合同(需提前创建“输出”文件夹)
doc.save(f"输出/合同_{row['甲方']}.docx")
关键解析:
- Document(tpl):每次循环重新加载模板,防止前一个合同的内容残留到下一个;
- iterrows():pandas 遍历行数据的方法,直接获取每行的 “甲方”“金额” 信息;
- 占位符设计:用《》包裹变量名(如《甲方名称》),避免与正文文字冲突。
注意事项:
安装依赖:pip install python-docx pandas;提前创建 “输出” 文件夹,或在代码开头加Path('输出').mkdir(exist_ok=True)自动创建。
4. 钉钉群自动打卡提醒:避免忘记打卡
适用场景:每天需在 9:25 提醒团队打卡,手动发消息易遗漏,用脚本 + 定时任务实现自动化。
实战代码:
python
import requests, datetime
# 1. 钉钉群机器人WebHook(替换为你的机器人token)
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
def send_remind():
# 2. 生成当前时间+提醒文案
current_time = datetime.datetime.now().strftime('%H:%M')
msg = f'{current_time} 打卡啦!@所有人'
# 3. 发送POST请求到钉钉接口
requests.post(
webhook,
json={"msgtype": "text", "text": {"content": msg}}
)
if __name__ == '__main__':
send_remind()
关键解析:
- 钉钉机器人配置:在钉钉群 “设置 - 智能群助手” 添加机器人,复制 WebHook 中的access_token(需保密,避免泄露);
- 定时执行:Windows 用 “任务计划程序” 设置每天 9:25 运行脚本;Linux/macOS 用crontab(如25 9 * * * /usr/bin/python3 /path/remind.py)。
注意事项:
安装依赖:pip install requests;确保运行脚本的设备网络通畅,钉钉机器人未被禁用。
5. 图片批量压缩:解决邮箱发送限制
适用场景:手机拍照的图片多为 10M 以上,超过邮箱附件大小限制,手动压缩效率低。
实战代码:
python
from PIL import Image
from pathlib import Path
# 遍历“照片”文件夹及子文件夹下所有jpg图片
for f in Path('照片').rglob('*.jpg'):
# 1. 打开图片
im = Image.open(f)
# 2. 按比例压缩(最大宽1920、高1080,不拉伸)
im.thumbnail((1920, 1080))
# 3. 保存压缩图,命名加“_压缩”,质量85(平衡画质与大小)
save_path = f.parent / f'{f.stem}_压缩{f.suffix}'
im.save(save_path, quality=85)
关键解析:
- thumbnail():按比例压缩图片,不会改变图片宽高比(如原图是 2000×1500,压缩后为 1920×1440);
- quality=85:JPG 格式的质量参数(0-100),85 可保证肉眼几乎无失真,文件大小降至 1-2M。
注意事项:
安装依赖:pip install pillow;若需压缩 PNG 图,将rglob('*.jpg')改为rglob('*.png'),保存时可加optimize=True优化大小。
6. 下载文件夹自动整理:告别混乱
适用场景:微信 / 浏览器下载的文件全堆在 “D:/ 下载”,表格、PDF、图片混在一起,找文件要翻半天。
实战代码:
python
import shutil
from pathlib import Path
# 1. 定义下载文件夹路径和文件分类规则
DOWN_DIR = Path('D:/下载')
# 键:文件后缀(多后缀用|分隔),值:目标文件夹
FILE_MAP = {
'xlsx|xls': '表格',
'pdf|doc|docx': '文档',
'jpg|png|jpeg': '图片',
'zip|rar|7z': '压缩包'
}
# 遍历下载文件夹所有文件
for f in DOWN_DIR.iterdir():
if f.is_file(): # 只处理文件,不处理文件夹
# 获取文件后缀(小写,去掉小数点)
suffix = f.suffix.lower().strip('.')
# 匹配分类规则并移动文件
for rule_suffix, target_folder in FILE_MAP.items():
if suffix in rule_suffix.split('|'):
# 自动创建目标文件夹(不存在则创建)
target_path = DOWN_DIR / target_folder
target_path.mkdir(exist_ok=True)
# 移动文件到目标文件夹
shutil.move(f, target_path / f.name)
break
关键解析:
- iterdir():遍历文件夹内所有文件 / 文件夹,用is_file()筛选出文件;
- FILE_MAP:灵活配置分类规则,可根据需求添加(如'mp4|mov': '视频');
- shutil.move():安全移动文件,避免手动拖拽误操作。
注意事项:
运行前确保下载文件夹内无正在打开的文件,否则会提示 “文件被占用”。
7. WiFi 二维码生成:客人扫码连网免问询
适用场景:公司客人频繁问 WiFi 密码,反复口述效率低,生成二维码贴前台更便捷。
实战代码:
python
import qrcode
# 1. 配置WiFi信息(替换为你的WiFi名称和密码)
wifi_ssid = 'Company-WiFi' # WiFi名称
wifi_pwd = '2025@Abcd' # WiFi密码
# 2. 生成WiFi二维码标准格式(T=加密类型,WPA最常见)
wifi_str = f'WIFI:T:WPA;S:{wifi_ssid};P:{wifi_pwd};;'
# 3. 创建二维码并保存
qr_img = qrcode.make(wifi_str)
qr_img.save('wifi二维码.png')
关键解析:
- WiFi 二维码格式:WIFI:T:加密类型;S:名称;P:密码;;,其中T可填WPA(常见)、WEP或nopass(无密码);
- qrcode.make():自动生成二维码,无需手动调整尺寸、容错率。
注意事项:
安装依赖:pip install qrcode pillow(pillow是生成图片的依赖);WiFi 名称和密码需准确,否则扫码无法连接。
8. 桌面截图一键整理:保持桌面整洁
适用场景:用 Win+Shift+S 截图后,图片全堆在桌面,长期不整理会杂乱无章。
实战代码:
python
import shutil, datetime
from pathlib import Path
# 1. 获取桌面路径(跨系统兼容,Windows/macOS通用)
desktop = Path.home() / 'Desktop'
# 2. 按当天日期创建文件夹(格式:20240823)
today = datetime.datetime.now().strftime('%Y%m%d')
target_folder = desktop / today
target_folder.mkdir(exist_ok=True)
# 3. 移动桌面所有png截图到目标文件夹
for f in desktop.glob('*.png'):
# 可选:只移动今天创建的截图(避免移动旧图)
create_time = datetime.datetime.fromtimestamp(f.stat().st_ctime)
if create_time.strftime('%Y%m%d') == today:
shutil.move(f, target_folder / f.name)
关键解析:
- Path.home() / 'Desktop':自动获取桌面路径,无需手动写 “C:/Users/XXX/Desktop”;
- f.stat().st_ctime:获取文件创建时间,确保只移动当天的截图,不干扰旧文件;
- 按日期分类:后续找截图时,直接按日期文件夹查找,效率更高。
注意事项:
若截图格式是 JPG(如部分截图工具设置),将glob('*.png')改为glob('*.jpg')即可。
写在最后:自动化才是高效工作的核心
以上 8 个脚本,覆盖了办公中 90% 的重复场景,每行代码都经过实战验证 —— 修改路径、配置参数就能直接用。Python 办公自动化的本质,不是 “写复杂代码”,而是 “识别重复工作,让机器代劳”:
- 手动 1 小时的 Excel 合并,脚本 10 秒完成;
- 手动 30 分钟的文件整理,脚本 2 分钟搞定;
- 每天重复的提醒动作,定时脚本自动执行。
#所有脚本的依赖库可一键安装:
pip install pandas openpyxl pymupdf python-docx requests pillow qrcode
如果你的工作中还有其他重复活(如批量发邮件、数据清洗),可以基于这些脚本的思路扩展。记住:把机械工作交给 Python,你才能专注于真正有价值的事 —— 这才是职场效率提升的关键。
感谢关注【AI码力】,获取更多Python秘籍!