图片明明就在文件里?
WPS有图,Excel却不认
一键让它现形
WPS私有图片 · 一键转Excel原生 · 命令行都不用
SpreadsheetCleaner
📦 3 Parts + Conclusion
👉 滑动
PART 01
前记
劫难没到头
PART 02
谛听上线
第四位神仙
PART ///
写在最后
一键下载
前两仗打完,以为表格劫难到头了?
结果是图没了,公式还报错。
01
PART
🎯 前记
PROLOGUE · 劫难没到头
铺主原以为折腾完「别再发“带病”的Excel了!」和「表格EVALUATE函数为什么失效了?」这两篇里面的工具,这辈子的表格劫难应该就算到头了。毕竟,SpreadsheetCleaner(谢必安、范无咎、钟馗三鬼捉垃圾)加上Excel_EvaluateRewriter(解决WPS和Excel的EVALUATE互撕),该扫的雷都扫得差不多了吧?

可惜最近经历,让人到中年的铺主觉得自己还是太年轻了
。最近,甲方爸爸过来跟铺主说,我同事给他过来的 xlsx 文件看不到照片让我处理一下。嗯?铺主警惕地打开一看,Excel确实没照片,却有一堆不起效的公式。铺主把截图发过去同事,同事天真地回了一句:“我这边有图啊,然后回了我一张截图.....” 铺主:MD,又要帮你们擦屁股
。
02
PART
🖼️ 看不见的图片
WPS与Excel的「各自为政」
WPS有个功能是“嵌入单元格图片”,用起来确实方便,图片老老实实待在单元格里,跟着行列一起动,不会乱跑。但问题是,这功能是WPS的私有实现,Excel完全不认。
WPS在背后做了什么呢?它把图片藏在一个叫 xl/cellimages.xml 的私有部件里,然后在单元格里塞了一个公式:_xlfn.DISPIMG("ID_xxx",1)。这个 DISPIMG 是WPS自己的函数,Excel字典里根本查无此词,所以打开后直接公式文本晾在那。
而Excel自己的原生图片体系叫 twoCellAnchor 浮动锚点,这是微软的正经格式,两套东西各说各话,井水不犯河水——苦的是我们这些两头都要打交道的人。
最讽刺的是什么?是图片其实还在文件里,只是Excel不知道怎么找。你把文件发给甲方领导,他打开一看,表格里没有图片,只有一堆报错公式,第一印象就是你发了个半成品。领导不会关心什么“WPS私有格式”这种技术理由,领导只会觉得你办事不牢。这种事摊上几次,铺主血压再高也扛不住。
03
PART
🛠️ 手动救不了
一张张改浮动?命都要没了
有人可能会说,那用WPS打开,把嵌入图片改成“浮动图片”不就行了吗?
是,行。两三张图片的小表格,你慢慢改,喝完一杯茶也就改完了。但铺主面对的是什么?经常是乙方发来的多个工作表的工程薄,每个表十几张图片,几十个表排成队等你处理。用WPS一张张表右键→“切换为浮动图片”→调整位置,搞完一个表血压已经上来了,搞完十个表铺主觉得这天没法过了。
这还不算什么,更离谱的是有些表格里,同一个图片被多个单元格引用,你改成浮动还得小心翼翼别重复劳动。总之,手改这条路,铺主试过,结论是:谁爱干爱干去!!
。
04
PART
🐕 谛听上线
能听万物,能辨真伪
被逼到墙角,只能继续写代码。铺主给 SpreadsheetCleaner 添了第四位神仙——谛听。
谛听是地藏王菩萨的坐骑,能听万物、能辨善恶真伪。这里派它上场,专门负责“听见”WPS藏在暗处的图片,然后把它“辨”成Excel能看懂的真东西。
谛听的处理流程是这样的:
嗅探
扫描所有工作表,把藏在单元格里的 DISPIMG 公式全揪出来,解析出图片ID。
挖宝
从WPS私有部件 cellimages.xml 里,根据ID找到对应的图片数据,提取出来。
重塑
在原单元格位置生成Excel原生的 twoCellAnchor 浮动锚点,图片等比缩放、居中,保持原来的比例不变形。
清场
把单元格里那串 _xlfn.DISPIMG(...) 垃圾公式清掉,保留单元格样式,不破坏表格外观。
撕票
彻底移除 cellimages.xml 及其关系文件,连 [Content_Types].xml 和 workbook.xml.rels 里的引用都一并撕干净,不留一点WPS私有的痕迹。
去重
多个单元格引用同一张图片时,自动复用同一个媒体部件,不重复存储,避免文件体积膨胀。
最省心的是,非WPS文件自动跳过,完全零开销,不怕误伤正常表格。
05
PART
👻 地府四鬼
SpreadsheetCleaner 全家桶
现在 SpreadsheetCleaner 的地府编制算是配齐了:
谢必安(白无常)
专勾冗余样式,不留一个废项。
范无咎(黑无常)
专锁失效名称,清扫索引垃圾。
钟馗
专砍无数据但有格式的单元格,斩断体积膨胀。
谛听(新入职)
专辨WPS私有图片,转换为Excel原生格式。
四位神仙联动,处理文件时先由谛听转换图片,再由谢必安、范无咎、钟馗清理垃圾,一条龙服务,甲方打开你的表格,终于能正常看见图了。
06
PART
💻 用法照旧
右键搞定,老规矩
安装和使用方式跟之前完全一样,没有新门槛:
把压缩包解压到一个文件夹,创建快捷方式到[%AppData%\Microsoft\Windows\SendTo] 。
然后选中要处理的表格(可多选甚至选文件夹),右键 → 发送到 → SpreadsheetCleaner,弹出窗口后自动处理。多文件批量处理、多线程提速、原文件自动备份为 .bak,都是老规矩。
什么打开GUI、拖文件到exe、写命令行的,太累了,怎么快怎么来。
///
LAST
✏️ 写在最后
EPILOGUE · 一键下载
铺主发现,同事的创造力真的是无穷无尽的。你以为解决了垃圾样式和EVALUATE就天下太平,结果他们立刻在“嵌入图片”上给你整新活。逼得铺主地府神仙越请越多,四鬼齐聚一堂,不知道的还以为在开阴间年会。
不过话说回来,这套东西折腾下来,至少以后收到乙方的WPS表格,铺主不用再一张一张手动改图片了。右键一发,谛听出马,甲方终于能看见图了,领导也终于不用用那种“你发了个半成品”的眼神看着我了。
这个项目的最新版本已经发布在 Gitee,包含谛听的完整功能,请留意文章最后:
有需要的老铁可以直接下载,源码也公开在里面,欢迎Star。如果还有什么问题或者新需求,欢迎在评论区留言,后台也可以联系到铺主。
既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧
。你们的点赞和评论对我有非常大的帮助
📥下载地址:https://gitee.com/ginkdu/spreadsheet-cleaner/releases
夜雨聆风