夜雨聆风学习资料网

ARTICLE · 1279731

Office批量查找替换工具:一份 Word 里的「公司」两个字,可能在 XML 里被拆成三个片段——数海丹心做了个批量查找替换工具

Office批量查找替换工具:一份 Word 里的「公司」两个字,可能在 XML 里被拆成三个片段——数海丹心做了个批量查找替换工具

TECH INSIGHT

一份 Word 里的「公司」两个字,可能在 XML 里被拆成三个片段——数海丹心做了个批量查找替换工具,默认只预览不写盘

先不看你是干什么的,先看这个场景:

科技 · 产业 · 人

深度观察

本文看点

01

01 公司改名了,旧名字藏在页眉页脚和几百个文件里

02

02 群里聊到这件事,我们发现大家卡的是同一个地方

03

03 这工具到底长什么样

01

01 公司改名了,旧名字藏在页眉页脚和几百个文件里

公司改名了,或者部门重组了,或者一个产品下线了。于是你要做的事情是—— 把所有文件里的那个旧名字,换成新名字。

这件事落在不同人头上,长的样子不太一样:

01

行政:一摞通知、纪要、值班表。开头是旧名字,落款是旧名字,页眉里印着旧名字,页脚里还写着「XX 公司 版权所有」

02

HR:几百份offer、劳动合同模板、员工手册。名字变了,模板不改就一天都发不出去

03

财务:台账、报销单、对账单。有些格子里是普通文字,有些是公式拼出来的字符串,有些整列都是合并单元格

04

老师:讲义、试卷、成绩分析。一份PPT 三十页,改名字要一页一页点

05

销售:合同模板、报价单、客户台账。同一份合同发出一百遍,收件人名字不一样,抬头却是同一个旧名字

06

学生:论文封面、答辩PPT、实验报告。指导老师换了姓,或者课题名字改了

共同点是:你不敢批量改。

不是不会,是不敢。因为在 Word 里按下「全部替换」的那一刻,你不知道会发生什么。

02

02 群里聊到这件事,我们发现大家卡的是同一个地方

需求是从群里攒出来的,问的都差不多。下面这几个问题,就是把那些问法归拢之后剩下的——先把它们答了,因为答案直接决定了这个工具长什么样。

第一个问题:为什么在 Word 里全部替换,格式会丢?

这是这一期最难的一段。你在屏幕上看到的「公司」两个字,在 Word 的文件里 不一定是一段连续的文本。Word 会因为加粗、斜体、拼写检查、输入法等原因, 把一句话切成好几个「片段」(术语叫 run)。你看到的:

公司

在文件里可能是:

片段1(加粗):公

片段2(普通):司

一个整齐的「公司」,被拆成了两个片段。 所以按片段去找「公司」, 永远找不到——这就是很多人说「明明看着有,就是替换不上」的真正原因。

工具的做法是:先把整段的文字拼成一个大串,在这个大串上做替换, 再按字符位置把结果切回原来的片段上。

变化的起点所在的片段拿「前缀 + 新文字」,中间被吃掉的片段清空, 终点所在的片段只保留「后缀」。这样加粗还在原来那个字上,颜色还在原来那个字上, 一个字都没挪窝。

第二个问题:为什么页眉里的名字没换成?

因为页眉、页脚、脚注、尾注、批注、文本框,在文件里是分开存放的, 跟正文根本不是同一块地方。你眼睛看是「一页纸」,文件里是六七个部分。 只在正文里替换,页眉一动都不动。

第三个问题:为什么 Excel 替换之后数据全变了?

因为 Excel 的一个格子,可能装的不是文字,是公式。 公式里也可能有字符串,比如 =A1&"元"。你替换「元」,公式里的字符串跟着变, 而这个变化你在单元格里看不见(公式算出来的结果可能看起来一样)。 所以要动公式,必须单独开一个开关,默认不动。

第四个问题:PPT 里改了一遍,为什么有的页没改到?

因为 PPT 的字不只在幻灯片上。备注页里的主讲提示、母版里的固定文字、 版式里的占位符,这些地方都有字,但你在放映的时候一个都看不见。 母版里的字改了,所有用这张版式的幻灯片会一起变——这是你要的效果, 但第一次看到会吓一跳。

所以这个工具就四件事:换得全 / 保得住格式 / 先给你看 / 源文件不动。

03

03 这工具到底长什么样

替换工具.exe,36.6 MB,双击就跑,全程不联网,不用装 Python。

窗口三段式:① 要处理的文件 → ② 替换规则和选项 → ③ 日志和进度。 右边是五个标签页:替换规则 / 选项 / 输出 / 预览 / 关于局限。

✅ Word / Excel / PPT / txt / csv / md / json / xml / html / rtf,一批一起换。

Word 能改:正文、表格、页眉、页脚、脚注、尾注、文本框、批注、超链接的显示文字。 Excel 能改:单元格的值、批注、定义名称。公式里的字符串和工作表名默认不动, 要动自己开开关。PPT 能改:所有幻灯片、备注页、母版、版式、文本框、表格。

格式全保留。 加粗、颜色、字号、样式都在原来的位置上。 Excel 的公式、单元格格式、合并单元格、列宽行高、条件格式、冻结窗格,改完全都在。 自检里是逐项打开输出文件验的,不是嘴上说的:改完重新读取, A1 的 加粗=True 颜色=FFCC0000、B2 的 黄底=FFFFFF99、 合并单元格 A1:D1、列宽 34.0、定义名称 甲方全称、公式=SUM(C3:C5)原样不动 ——七项逐项对。

✅ 默认只预览,不写盘。 这是这个工具的底线。

勾着预览点「开始处理」,它不干活,先给你一张清单: 哪个文件、第几处、什么位置、原文、会变成什么,还能导出成 Excel。 这一步是真的一个文件都不写——自检里给源目录拍了「文件名+大小+修改时间」 快照,预览跑完再拍一张,逐项比;输出目录连一个空文件夹都没多出来。

✅ 源文件一个字节都不动。 结果写到输出目录,源文件从头到尾只读。 自检里跑完一遍,把源目录每个文件重新算一遍 SHA-256,跟跑之前逐个比,全等。

✅ 同名永远不覆盖。 输出目录里已经有 公司制度.txt,新的自动变成 公司制度 (2).txt。自检里真跑了:先放一个,再跑一遍,产出的是 (2), 原来那个文件内容一个字符没变。

✅ 子目录层级保留,没有内容的文件不产出。素材\往年资料 2025\旧合同摘要.txt 出来还是 素材_已替换\往年资料 2025\旧合同摘要.txt。没找到关键词的文件不生成多余副本。

规则一行一条,多条按顺序依次套用:

# 井号开头是注释

XX科技有限公司=XX集团有限公司

老简称=新简称

广告词=

写 A=B 和 B=C,输入 A 最终会变成 C——不是B。这条自检里真跑了。

正则、反向引用、忽略大小写、全半角归一、只换第 N 次,都有。 「只换第 N 次」数的是整个文件的第 N 次,不是每段各算一次 ——一个文件前面已经命中 5 处,第 6 段里的第一次出现,对整份文件来说是第 6 次。 自检里有一条断言专门盯着这个跨段落的计数。

一个挺好笑的类比: 这类工具在很多人印象里等于「按下按钮,听天由命」。 这个工具更像那种会先把清单打印出来、递到你面前、然后站在旁边等你点头的同事。 它慢的那一步,是你后来最不后悔的那一步。

如实说局限

01

.doc/.xls/.ppt这三种旧格式完全不支持,会跳过并报出来

02

受保护的文档直接跳过(文件里带保护标记的),因为改完也打不开,属于白干

03

Excel 公式里的字符串、工作表名默认不动,要动自己开开关——改工作表名会影响公式引用

04

RTF 能力打折:明文和转义两种都认,但中文正则对 rtf 无效,整词/全半角/第N次不支持

05

改 PPT 母版里的文字会影响所有用这张版式的页,这是你要的效果,但先知道一下

06

图片里的字改不了,那是图片不是文字

07

整词是近似定义:匹配到的字前后不能紧邻中文、字母、数字。中文没有空格分词,

只能定到这个程度。XX科技有限公司 承接 里的「公司」后面是空格,会被换掉 ——按定义它确实该换,但你直觉上可能觉得不该。所以先看预览

04

04 254 条断言,全绿才发

老规矩了。

工具源码里带着 --selftest。16 个板块,254 条断言,全绿才算过。 全程在临时目录里造数据,跑完删掉,不碰你任何一个文件。 打包成 EXE 之后,其中 253 条会再跑一遍——两边都是 0 失败。

差的 1 条是「读源码文件核对行数和注释量」,打包后那个路径读不到, 会明确打一行「打包模式下跳过」,不假装验过。

上面那些数字——加粗=True 颜色=FFCC0000、公式 =SUM(C3:C5) 原样不动、 公司制度 (2).txt、快照逐项相等、3 万处命中不到 1 秒 ——没有一个是写文章的时候编的,全都是自检里真跑出来、被断言卡住的。

这一期有几个坑值得单独说。

第一个:一个段落拆成几个片段,回填的时候「插入的文字算谁的」。 拼起来替换很简单,难的是把结果切回去。如果新插入的文字归给了前一个片段, 它会继承前一个片段的格式——看起来替换成功了,其实那两个字悄悄换了字体。 本工具的做法是往后归属:某个位置上的插入,归给「从这个位置开始的那个片段」。 回填完还会把结果重新拼起来跟目标串逐字比,不一致就放弃这一段、保持原样, 绝不写出一个错的 XML。

第二个:xml:space这个属性不能忘。 替换后如果文字前后带空格, 不补把它设成 preserve 的那个标记,Word 会把空格吃掉,表现是「替换成功了但字粘在一起」。 凡是首尾有空白的文本节点,工具都会补上。

第三个:为什么要直接改 XML,不用 python-docx 回写。 docx / pptx 本质就是 zip 里的一堆 XML。工具的做法是解开 zip, 只改文字节点里的字,别的字节原样搬过去——连 vbaProject、主题、 图表、图片都不受影响。页眉页脚脚注尾注批注文本框分别在不同的部分里, 按 zip 条目一个个改,一个不漏;用 python-docx 找齐很啰嗦, 漏一个用户就以为「替换没生效」。

第四个,也是这一期花时间最多的一段:EXE 的体积。

打包脚本里有一大段注释,专门讲这件事,因为动手改打包参数之前必须读完。

背景是这样:这台机器上装了终端安全软件。它会拦「体积小的未签名单文件 EXE 短时间内密集新建文件」,表现是抛假的拒绝访问错误,重试、等待都救不回来。 同一份代码用 Python 直接跑,一个都不会失败。

我们拿一份极简探针源码(只做「建 20 个 docx」这一件事, 不 import 任何第三方库,纯手工拼文件,这样才能压到 10MB 量级)量了一遍:

打包方式
EXE 体积
建 20 个文件的结果
纯标准库探针,把所有能撑体积的都排掉
8.4 MB失败 16
(连跑三轮都是 16)
探针 + 只带 openpyxl
10.5 MB
成功 20
探针 + 不带 openpyxl,只用 numpy/PIL 撑到 21.1 MB
21.1 MB
成功 20
用第三方库建文档的探针,排掉撑体积的库
14.7 MB
成功 20

老实说,结论和上一期不完全一样。「8.4 MB 被拦」这一条稳定复现; 但「必须撑到 20MB 以上」这条没有复现——10.5 MB 那版就成功了。 我们没有做出一张能画出干净阈值的曲线,也不能说「阈值是 10MB」, 样本太少,而且拦截策略本来就可能跟时间、文件哈希有关。

那为什么还是打到 36.6 MB? 因为打包后的自检和业务实测都全绿, 而这个体积是唯一一个「在这台机器上每次都验干净」的版本。 按能验干净的来,不自作聪明去压。

打包完还单独跑了冒烟测试,确认窗口真能开出来——1216 × 899, 标题 数海丹心 · 替换工具 v1.0。

「能双击打开」和「能正常干活」是两件事,我们分开验。

拿真素材跑的那一遍

素材是照着一家公司改名时,办公文件夹里会躺着的那一坨造的,9 个文件: 一份带页眉页脚表格的更名通知 docx、一份带公式带格式带批注的客户台账 xlsx、 一份带备注页的季度汇报 pptx、一个 GBK 编码的通讯录 csv, 还有 md、txt、htm、json,外加子目录里一份往年的旧合同。

先预览(一个文件都没写):

模式:预览(这一步一个文件都不会写)

[1/9] 01 公司更名通知.docx

    ✓ 会改 6 处(预览,没写盘)

[2/9] 02 客户台账.xlsx

    ✓ 会改 6 处(预览,没写盘)

[3/9] 03 季度汇报.pptx

    ✓ 会改 3 处(预览,没写盘)

...

预览完成:9 个文件会被改,共 25 处(一个文件都没写;加 --执行 才真替换)

确认没问题,真执行:

模式:执行替换(源文件不动,结果写到输出目录)

执行完成:改了 9 个文件、共 25 处;成功 9  跳过 0  失败 0  受保护 0  耗时 0.1 秒

跑完重新算源目录 9 个文件的 SHA-256,跟前面对照,一个都没变。

产出物逐个打开验:docx 的页眉从「华鑫科技有限公司 文件」变成 「华鑫集团有限公司 文件」,页脚同步改了,表格里的旧名字全换; xlsx 的红字加粗和黄底还在,合并单元格还在,公式=SUM(C3:C5)一点没动; pptx 的幻灯片和备注页都改了。

打包后的 EXE 用同一批素材、同样的参数从头跑到尾:成功 9、失败 0,耗时 0.2 秒。

05

05 我们不做知识付费,不贩卖焦虑

市面上这类工具的路数我们见多了:免费版只能改 20 个文件,想要「批量」?开会员。 想要「保格式」?再开一档。想要「导出清单」?还有一档。

我们不做这个。

数海丹心背后是 5 个活跃的社区群、几百款免费小工具。 从多表合并、批量改名、周报汇总、PDF 处理、全能搜索、文章下载、文件去重、 批量生成 Word、图片批量压缩、表格对比、表格拆分、批量插图、PPT 批量处理、 水印工具、扫码工具、文件分类归档、中文文本批处理,到这一期的批量查找替换 ——AI 加持之后,你随口提一个办公痛点,群里很可能第二天就有人给你变出一个能双击运行的 EXE。

这个替换工具也一样,源码就在文件夹里,3797 行,中文注释写得很密 ——踩过的坑全写在注释里了(光注释行里的中文字符就有三千多个)。 想改哪里自己改,改完双击 一键打包.bat——它会先跑自检,自检不过就不打包, 打完还把 EXE 再跑一遍自检。

不仅给鱼,还给渔具。

06

工具在群里,进来拿

这一版照旧不放网盘、不放链接。

想拿?走唯一入口:

01

关注数海丹心公众号

02

后台回复“进群”

03

进群免费领取本工具

群里不止这一款,几百个免费工具随便挑。遇到别的办公痛点,直接在群里开口, 下一个连夜帮你写工具的,没准就是我们。

下次再面对那一摞要改名字的文件,记住这个顺序: 先预览,看一眼清单,再点执行。

---

工具不会更改源文件内容,使用失误造成的影响概不负责。

写在最后

看到这儿,说明你把它读完了。这类文章能走多远,只取决于两件事:你的在看和转发。

顺手关注并设为星标,下一篇更新第一时间见。

END

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料