如何在不打开文件的情况下批量合并多个WPS工作簿?
不打开文件即可合并多个WPS工作簿,用Power Query批量追加,一键刷新,告别复制粘贴。

痛点:为什么“不打开”才是刚需
每天清晨,运营同事把前日 38 个门店的日报发到群里,文件名还带着时间戳。过去最稳妥的做法是逐个打开→复制→粘贴→另存为,一旦中间手滑关了窗口,就要重新对齐表头。更尴尬的是,只要源文件被同事再次编辑,已粘过来的数据立刻“过期”。批量合并工作簿的核心诉求,其实就是让数据在“不打开”的前提下被一次性捞取,并且以后能一键刷新。
WPS Spreadsheets 在截至当前的最新版本里,把 Power Query(中文界面叫“查询与连接”)完整下放到 Windows 个人免费版,macOS 与 Linux 版功能覆盖率约 95%,移动端暂不支持。只要源文件存在本地磁盘或局域网共享盘,就能用“从文件夹”方式批量追加,全程无需肉眼核对。
前置条件:先让文件满足“可合并”
Power Query 并非“格式修复器”,它只负责把结构一致的表纵向拼在一起。经验性观察:如果列顺序或列名不一致,追加后会生成大量 null 值,后期清洗反而更耗时。因此,在正式合并前,建议用以下 3 步做“源头标准化”:
- 统一工作表名称,例如都叫 日报。
- 统一列名与顺序,可提前发一个“模板空表”给各门店。
- 把文件放在同一文件夹,且不再混入其他无关表格。
完成这三步后,后续追加逻辑就能做到“零手工干预”。
决策树:三种批量合并方案对比
| 方案 | 是否需打开文件 | 刷新便捷度 | 适合场景 |
|---|---|---|---|
| VBA 宏循环 | 是 | 中 | 老模板且禁用 PQ 的环境 |
| 复制粘贴 | 是 | 低 | 一次性、文件少于 5 个 |
| Power Query | 否 | 高 | 周期性、文件数 ≥5 |
从“不打开”与“可刷新”两个维度看,Power Query 是唯一兼顾自动化与低出错率的方案。
Windows 桌面版操作路径:10 步完成首次合并
- 启动 WPS Spreadsheets,新建空白工作簿。
- 菜单栏选择数据→查询与连接→从文件夹获取数据。
- 在弹出的“文件夹路径”对话框中,浏览到存放 38 个门店日报的目录,点击确定。
- Power Query 导航器会列出该文件夹内所有可识别文件(*.xls、*.xlsx、*.et)。确认列表无误后,点击转换数据。
- 在 Power Query 编辑器里,先过滤掉无关文件,例如临时文件 ~$*。
- 按住 Ctrl 选中“Content”与“Name”两列,右键→删除其他列,减少干扰。
- 点击“Content”列右侧的“双向下箭头”图标,选择合并并加载→勾选选择多项→仅勾选名为 日报 的工作表。
- 若系统检测到列名不一致,会弹出“列名差异提示”,此时选择“使用第一文件作为模板”,确保列顺序统一。
- 点击左上角关闭并加载至…,选择“新工作表”,完成首次合并。
- 保存主控文件,例如 门店汇总_v1.xlsx。
提示:若日后门店继续往同一文件夹丢新文件,只需在主控文件里点数据→全部刷新,新数据会秒级追加,无需重复上述步骤。
macOS 与 Linux 版差异说明
截至当前的最新版本,macOS 版入口为数据→获取数据→从文件夹,界面翻译与 Windows 完全一致;Linux 版(统信 UOS 与麒麟)在相同路径下,仅不支持“从 SharePoint 文件夹”子项,本地磁盘与 SMB 共享盘测试通过。整体步骤与 Windows 无差别,可复用上述 10 步。
常见分支:只合并部分列或需要横向追加
场景 A:只想保留指定 6 列
在 Power Query 编辑器里,点击“选择列”→勾选需要的 6 列→确定,再继续关闭并加载即可。后续刷新仍只保留这 6 列,新增文件的多余字段会被自动忽略。
场景 B:需要把“门店编号”追加为新增列
在步骤 5 之后,先保留“Name”列,用“拆分列”→按分隔符“-”提取出门店编号,再与内容展开后的表合并。这样即使源文件里没有门店编号,也能通过文件名反推出归属。
刷新失败排查:从现象到处置
| 现象 | 可能原因 | 验证方法 | 处置 |
|---|---|---|---|
| 刷新时报“文件正被占用” | 源文件被其他同事打开 | 尝试重命名源文件 | 让同事关闭或复制副本再刷新 |
| 追加后多出空白行 | 源表存在筛选隐藏行 | 在源文件按 Ctrl+End 看末行 | 在源文件清除多余格式再保存 |
| 列顺序错乱 | 新增文件列名不一致 | Power Query 提示差异 | 统一模板或手动调整列映射 |
性能与边界:文件多大、数量多少算安全
经验性观察:在 16 GB 内存、SSD 的 Windows 笔记本上,合并 200 个 1 MB 左右的 xlsx,耗时约数十秒,最终生成 70 万行、30 列的汇总表,文件体积 90 MB,仍可正常刷新。若单文件超过 50 MB 或总列数大于 150,Power Query 编辑器可能出现“预览加载慢”提示,此时可取消“预览”选项,直接后台加载。
警告:若公司电脑内存 8 GB 以下,建议分批合并(如按月分子文件夹),否则刷新时容易触发系统内存不足,导致 WPS 自动重启。
自动化再进阶:用任务计划实现无人值守刷新
WPS 暂未像 Microsoft 365 提供“工作簿自动刷新”后台服务,但可借助 Windows 任务计划程序实现“打开即刷新”。步骤如下:
- 在主控文件里录制宏:开发工具→录制宏→命名为 AutoRefresh→停止录制。
- 在 VBA 编辑器里把宏代码替换为:
ThisWorkbook.Connections("查询 - 汇总").Refresh - 在 ThisWorkbook 对象添加 Open 事件:
Private Sub Workbook_Open()
Call AutoRefresh
ThisWorkbook.Save
Application.Quit
End Sub - 保存为启用宏的工作簿 *.xlsm。
- 在任务计划程序里新建任务,触发器设为“每天早上 07:30”,操作里填写 wps.exe 路径并附加“汇总.xlsm”参数。
这样系统会在后台静默完成刷新、保存、退出,门店同事上班时就能看到最新汇总。
合规与协作:多人同时写入怎么办
Power Query 读取时采用只读锁,理论上不会与编辑者冲突。但经验性观察:若同事正好在保存,Windows SMB 缓存机制会导致读取失败。缓解方案:
- 让各门店把文件先另存为“临时副本”,再用脚本统一重命名。
- 或规定“写入窗口”,例如每天 10:00 前完成上传,10:30 后统一刷新。
何时不该用 Power Query
以下场景建议改用其他工具:
- 源文件为动态数组公式且需要回写(PQ 只读)。
- 需要横向合并(类似 SQL JOIN)且关系字段不唯一,PQ 会出现笛卡尔积,后期难以排查。
- 公司政策禁用外部数据连接,打开文件时会提示“已阻止自动刷新”。
最佳实践速查表
| 步骤 | 检查项 | 通过标准 |
|---|---|---|
| 1. 建模板 | 列名、顺序、工作表名 | 与主控文件一致 |
| 2. 文件夹 | 仅含待合并文件 | 无临时/备份文件 |
| 3. 刷新前 | 文件未被占用 | 可重命名源文件 |
| 4. 刷新后 | 行数、汇总值 | 与上次差值合理 |
FAQ(结构化数据)
合并后列宽消失怎么办?
Power Query 默认不保留格式。可在“关闭并加载”时选择“仅保留值”,再手动设置一次列宽,后续刷新不影响。
刷新提示“找不到列”?
新增文件缺失该列。在 PQ 编辑器里用“选择列”→“使用第一文件作为模板”可强制对齐,缺失列自动补 null。
Linux 版打不开 Power Query?
确认安装的是“WPS Office 专业版增强”而非精简版;若仍无入口,可在终端执行 sudo apt install wps-office-professional 升级至最新版本。
总结与下一步行动
批量合并工作簿的核心关键词是“不打开”,Power Query 通过“从文件夹”一次性追加,兼顾刷新与低出错率。先标准化模板,再按 10 步完成首次合并,后续只需点击刷新。若文件数量或体积超过本机内存,可拆分子文件夹或改用服务器端 ETL。
下一步,你可以:
- 把本文最佳实践打印成一页 A4,贴在办公区供同事参照。
- 用任务计划实现无人值守刷新,彻底解放双手。
- 若需横向合并或回写,再评估是否迁移到 WPS 数据透视或第三方 BI。
现在就打开 WPS,新建一个空白表,跟着步骤走一遍,十分钟后你就能体验到“不打开文件”的爽感。