WPS表格如何按姓名批量创建文件夹并自动命名?

功能定位:为什么“姓名→文件夹”必须自动化
行政、教务、财务每月都要把N份证书、学生档案或发票按姓名归档。手动“右键→新建→重命名”100 次,至少 15 分钟,还常因空格、全半角混用埋雷。WPS 2026 Spring 把 Python 运行时嵌进表格后,本地 30 秒即可闭环,无需联网,也省掉额外装环境的麻烦。
相比早期 VBA,Python 脚本在 Windows/Linux/macOS 三端通用,默认 UTF-8 编码,中文姓名不再乱码;对比 Power Query 的“文件夹连接器”,WPS 直接落盘为真实目录,扫描仪、摄像头、RPA 工具可立即读写,没有“仅建链接”的二次转换成本。
前置条件与版本边界
截至 12.9.3.8411,Python 脚本入口仅开放给 Windows 与 Linux 桌面端;macOS 与移动端仍为只读控制台,无法回写文件系统。免费账号即可运行,不消耗 AI 生成额度。若公司策略禁用命令行,需让 IT 把 wpspython.exe 加入白名单,路径通常位于安装目录下的 python 子文件夹,具体因版本而异。
决策树:哪条路线最适合你
1 人 + 一次性任务 < 200 条
直接用 WPS 内置 Python,走完本文脚本即可。
多人协作 + 高频 > 500 条/周
把脚本改造成“带日志的可执行文件”,结合 WPS 云盘“同步文件夹”,让扫描仪落盘即自动归类。
涉密内网无法运行脚本
退回到“公式生成 MD 命令 + 批处理”方案,仅损失 Unicode Emoji 支持,其余正常。
准备数据:姓名列规范检查
把姓名放在 Sheet1 的 A2:A 末行,先“数据→删除重复”去重,再“开始→清除格式”去掉手动着色,防止空格或换行符混进。若姓名里可能出现半角斜杠 / 或反斜杠 \,提前替换成全角\,否则 Windows 会把它当路径分隔符,导致创建失败。
脚本入口:如何打开 WPS 嵌入式 Python
Windows 最短路径
- 打开表格 → 顶部菜单“工具”→“脚本编辑器”。
- 首次使用会提示“下载 Python 运行时”,体积约 38 MB,内网环境可离线导入。
- 左侧树形面板右键“添加模块”,命名
create_dir.py。
Linux 最短路径
菜单栏路径相同,但运行时复用系统 Python3(≥3.8),若提示缺失 python3-devel,请用包管理器补齐。
可复制脚本:逐行解释
import os, sys
from pathlib import Path
# 获取当前工作簿所在目录
wb_path = Path(xlwings.Book.caller().fullname).parent
root = wb_path / "姓名文件夹"
root.mkdir(exist_ok=True)
# 读取 A2:A 最后一行
sht = xw.Book.caller().sheets[0]
names = sht.range("A2").expand("down").value
if not isinstance(names, list): # 仅一行时返回单个值
names = [names]
for n in names:
if n is None:
continue
folder = root / str(n).strip()
try:
folder.mkdir()
except FileExistsError:
print(f"已存在:{n}")
except OSError as e:
print(f"无法创建:{n},原因:{e}")
print("全部完成,共", len([d for d in root.iterdir() if d.is_dir()]), "个文件夹")
脚本依赖 WPS 内置的 xlwings 封装,无需手动 pip install。保存后点击“运行”按钮即可在侧边栏看到实时日志。
运行结果验证
脚本结束后,会在工作簿同级目录生成“姓名文件夹”目录,内部一一对应 A 列姓名。打开任意文件夹,确认其“修改日期”与脚本运行时间一致,即代表创建成功。若日志出现“无法创建”,大概率是 Windows 保留字(CON、PRN、AUX 等)或长度超过 260 字符,可手动在脚本中加判断:
if n.upper() in {"CON","PRN","AUX","NUL"}:
continue
失败分支与回退方案
- 脚本误报“权限不足”:检查公司杀毒软件是否拦截
wpspython.exe的文件系统调用,临时关闭或把工作目录加入白名单即可。 - 姓名含 Emoji 导致 Linux 无法落盘:把文件系统挂载参数改为
utf8=1,或在脚本里用.encode('utf-8', 'replace')过滤。 - 需要撤销:直接删除“姓名文件夹”根目录即可,脚本不会改动原始表格数据。
高频扩展:自动把扫描件移进对应文件夹
行政同事常把证书批量扫描成 scan_001.jpg 这类顺序文件。可在脚本后段追加:
scan_src = wb_path / "扫描缓存"
for idx, img in enumerate(scan_src.glob("*.jpg"), 1):
if idx <= len(names):
target = root / names[idx-1].strip() / f"证书_{idx}.jpg"
img.replace(target)
经验性观察:300 张 2 MB 扫描图移动耗时约数十秒(NVMe 固态)。若扫描仪仍在写入,请等指示灯熄灭再运行,避免文件占用冲突。
性能与合规注意
本地 Python 运行不经过云端,满足大多数政务内网要求;但若把脚本改成“联网下载头像”再写入文件夹,就会触发外连审计。企业管理员可在“配置工具→安全→脚本网络策略”里禁用所有出站请求,确保零流量出境。
不适用场景清单
| 场景 | 原因 | 替代建议 |
|---|---|---|
| 姓名超过 2000 字符(少数民族长名) | Windows MAX_PATH 默认 260 | 启用长路径策略或改用编号映射 |
| 需要按“姓名+日期”动态子目录 | 脚本需追加时间变量 | 在 folder.mkdir() 前拼接 datetime.now().strftime("%Y%m") |
| 共享盘 FAT32 格式 | 不支持 Unicode 长文件名 | 先在本机 NTFS 生成,再压缩打包上传 |
最佳实践 5 条速查表
- 先备份原始表格,再运行脚本;
- 命名规则提前统一(去掉空格、特殊符号);
- 脚本日志截图留档,方便审计;
- 扫描文件先集中缓存,确认数量等于姓名数再移动;
- 每月清理一次空目录,防止无姓名行遗留。
FAQ:必须用 Python 吗?
没有编程基础能否完成?
可以,直接复制本文脚本即可运行,WPS 提供图形化“运行”按钮,零命令行操作。
Mac 版什么时候支持?
官方在社区回复“计划 2026 年夏季测试”,目前可用 VBA 替代,但需外接虚拟机。
脚本能否加密,防止同事误改?
在“脚本编辑器→文件→设置”勾选“只读运行”,并给表格加修改密码即可。
创建后能否自动共享到云盘?
把“姓名文件夹”放到 WPS 云盘同步目录即可,脚本无需改动;同步速度取决于带宽。
收尾:下一步行动
把姓名粘进 A 列,按章节 4 运行脚本,30 秒后本地即生成整齐文件夹。后续若想叠加“自动重命名扫描件”或“云端同步”,回到章节 8 与 FAQ 对号入座即可。动手一次,告别手动右键时代。
未来趋势/版本预期
官方路线图透露,2026 夏季 Mac 端将开放完整运行时,并计划提供“低代码”拖拽式脚本组件;届时同一套 Python 代码可在三端无差异执行,配合 WPS 云盘 API 有望实现“扫描→归类→共享”全链路零人工干预。现在先把本地流程跑通,等新版本落地即可一键升级。
📺 相关视频教程
WPS:批量提取文件名称。 #wps #excel #办公技巧 #干货分享


