工资表批量拆分成单人文件:邮件合并 / 脚本 / 工具三条路
需求前提
工资条分发的核心不是「怎么拆」,是「怎么保证谁也看不到别人的」。这一点决定了方案选择。
方案一:邮件合并(Word + Outlook)
用 Word 的邮件合并功能读取 Excel 名单,配合 Outlook 逐人发送。
优点:Office 自带,一次能发几百人。
缺点:
- 只能承载纯文本字段,多层表头、颜色、合并单元格全部丢失
- 无法作为附件发送完整表格
- 依赖 Outlook 客户端配置
适用:只有「姓名 + 几个数字」的简单通知。
方案二:脚本生成 + 程序化发送
import openpyxl
from pathlib import Path
wb = openpyxl.load_workbook("工资总表.xlsx")
ws = wb.active
for row in ws.iter_rows(min_row=2, values_only=True):
name, *data = row
# 实际项目中这里需要新建工作簿、复制表头与样式后再写入
...
优点:格式可控、逻辑透明,能接进完整的自动化流水线。
缺点:
- 需要编程能力,工资列一变动就要改代码
- 公司邮箱对批量外发普遍有限制,容易被反垃圾策略拦截
- 「保留原表格式」这件事在 openpyxl 里要写不少代码(见第 5 篇)
方案三:本地批量拆分工具
关键约束:必须在本机运行。工资数据过一次公网服务,性质就变了。
这类工具的典型流程:选表 → 指定「姓名」列 → 输出每人一个文件。
- 原格式保留,不需要二次排版
- 支持二级拆分:先按部门拆,部门内再按人拆,一次运行同时产出「部门汇总」和「每人一份」
- 支持按部门自动打 zip,便于分发
- 全程本地,断网可运行
三种方案对比
| 维度 | 邮件合并 | 脚本 | 本地工具 |
|---|---|---|---|
| 需要编程 | 否 | 是 | 否 |
| 保留格式 | 否 | 需额外开发 | 是 |
| 数据出网 | 否 | 取决于发送方式 | 否 |
| 二级拆分 | 否 | 需自己实现 | 是 |
| 批量打包 | 否 | 可 | 是 |
总结
- 只有几个字段的简单通知,邮件合并够用
- 每月都做、格式有要求,选能保留格式的本机工具
- 需要按部门汇总 + 按人分发两套结果,必须支持二级拆分
- 无论哪种方案:先备份原表,先拿两三行小样本试跑,确认无误再全量执行
- 工资类数据,把「是否联网」当成硬性筛选条件
示例中的工具是 ExcelRouter(开源 MIT),桌面版与 AI 技能版共用同一套内核:
文中提到的工具:ExcelRouter
把一个或一整批 Excel 按部门、区域、工号等字段拆成多个文件,完整保留复杂表头与格式, 可再按人二级拆分并打包 ZIP。Windows + 银河麒麟 / 统信 UOS,免费开源(MIT), 全程本机处理,不联网、不上传。
下载(国内 · Gitee) GitHub 源码 ⭐