我说的不是那种你为了美化报表,精心插入的logo或者图表。我说的是那种,不知道哪个“好心”的同事,或者某个上古时代的系统导出的数据,把成百上千张产品图、员工照片、资产快照,密密麻麻地、一个萝卜一个坑地,直接塞进了单元格里。
你面对着这个几十甚至几百兆的Excel文件,老板的需求很简单:“把这里面的所有图片都给我导出来,要单独的图片文件,今天下班前要。”
你的第一反应是什么?
大概率是,深吸一口气,然后开始最原始、最愚公移山的操作:选中一张图片,右键,在菜单里颤抖地寻找“另存为图片”,然后选一个文件夹,给它起个名字,比如“产品图1.jpg”,保存。接着,下一张,“产品图2.jpg”……
当你处理到第15张图的时候,你的眼神开始涣散,手指和鼠标联合起来向你的大脑提出抗议。你开始怀疑人生,怀疑这份工作的意义,甚至开始思考宇宙的起源。如果这个表格里有三百张图呢?一千张呢?
停!快停下这种堪比体力劳动的自虐行为。
今天,我就要给你捅破这层窗户纸,告诉你几个能让你瞬间从“表格苦力”变身“效率大神”的骚操作。尤其是第一个,简直是降维打击,学会了能在同事面前横着走。
王者级操作:偷天换日,改后缀名大法
这招,是我压箱底的宝贝,它利用了Excel文件一个不为人知的“秘密身份”。
你以为.xlsx文件就是一个铁板一块的表格文件吗?错!大错特错。从Office 2007开始,我们现在用的.xlsx、.docx、.pptx这些文件,本质上,它们就是一个被精心伪装过的压缩包!像不像一个穿着西装的特工,其实内里藏着各种机关?
知道了这个秘密,事情就好办了。我们要做的,就是扒掉它的“西装”,看看里面到底有什么。
操作步骤,看好了,别眨眼:
-
备份!备份!备份!重要的事情说三遍。把那个让你头疼的Excel文件,复制一份出来。千万不要直接在原文件上操作,否则万一出了什么岔子,你可能连哭的地方都找不到。我们管这份复制出来的文件叫“替死鬼.xlsx”。
-
找到这个“替死鬼.xlsx”,选中它。现在,进行一个堪称“魔法”的操作:重命名。我们要改的不是文件名,而是文件的后缀名。把那个
.xlsx的后缀,直接、粗暴地改成.zip。对,你没看错,就是改成压缩文件的后缀
.zip。 -
改完之后,系统可能会弹出一个警告,说什么“如果改变文件扩展名,可能会导致文件不可用”,别理它,直接点“是”。我们就是要让它“不可用”,或者说,让它“变身”。
-
现在,看看你的那个文件。它的图标是不是从Excel的绿色图标,变成了一个压缩包的图标?双击打开它。
见证奇迹的时刻到了。
你看到的不再是Excel的表格界面,而是一个像文件夹一样的结构。里面有一堆你看不懂的文件夹,比如
_rels、docProps等等。别管它们,我们的目标很明确,找到一个叫xl的文件夹,双击进去。 -
在
xl文件夹里,你会看到一个新的世界。继续寻找,找到一个名为media的文件夹。这个media,就是藏着所有宝藏的地方! -
点开
media文件夹,然后,深呼吸……你表格里所有的图片,一张不少,完完整整、原汁原味地躺在这个文件夹里!它们都是以“image1.png”、“image2.jpeg”这样的形式命名。
现在你需要做什么?全选,复制,然后粘贴到你想要的任何地方。
整个过程,从复制文件到拿到所有图片,熟练的话,不超过30秒。想想你之前一张一张右键保存的辛酸,是不是有种想哭的冲动?
这个方法,就是利用了Office文档的底层结构,直接从“仓库”里把货提走,根本不跟那个慢吞吞的“店面”(Excel界面)打交道。它干净、利落、高效,而且导出的图片都是原始分辨率,没有任何损失。这,就是技术的力量。
进阶玩家的选择:VBA代码,一键执行
当然,总有那么些特殊情况。比如,公司的电脑策略禁止你修改文件后缀名,或者你面对的是老旧的.xls格式文件(这种格式不是压缩包,上面的方法无效)。
这时候,我们就需要请出另一位大神:VBA(Visual Basic for Applications)。
别一看到“代码”两个字就头晕。这东西看起来复杂,但对于我们这种“拿来主义者”,你不需要懂它是怎么写的,只需要知道怎么用就行。下面这段代码,你直接复制粘贴,就能解决问题。
操作步骤:
-
打开你的Excel文件。
-
按下快捷键
Alt + F11,这会打开一个看起来很高级的窗口,这就是VBA编辑器。 -
在左侧的“工程”窗口,找到你的文件名,右键点击,选择“插入” -> “模块”。这会给你一个空白的写作板。
-
把下面这段代码,完整地复制粘贴到右边的空白区域:
```vb Sub ExportImages() Dim shp As Shape Dim ws As Worksheet Dim folderPath As String Dim i As Long
' 创建一个文件夹来存放图片,这里是在D盘创建一个叫 "Excel图片导出" 的文件夹 folderPath = "D:\Excel图片导出\" If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath End If i = 1 ' 遍历工作簿中的每一个工作表 For Each ws In ThisWorkbook.Worksheets ' 遍历工作表中的每一个形状(图片也是一种形状) For Each shp In ws.Shapes ' 判断这个形状是不是图片 If shp.Type = msoPicture Then ' 导出图片 shp.CopyPicture Appearance:=xlScreen, Format:=xlBitmap With ActiveChart .ChartArea.Format.Fill.UserPicture shp.Name .Export Filename:=folderPath & "图片_" & i & ".png", FilterName:="PNG" End With i = i + 1 End If Next shp Next ws MsgBox "所有图片已成功导出到 " & folderPathEnd Sub ```
-
关掉VBA编辑器窗口。回到Excel界面,按下快捷键
Alt + F8,会弹出一个“宏”的对话框。 -
在对话框里,你会看到一个叫
ExportImages的宏,选中它,然后点击“执行”。
稍等片刻,Excel可能会轻微“闪烁”一下,然后弹出一个提示框,告诉你“所有图片已成功导出到 D:\Excel图片导出”。你去D盘看看,是不是多了一个叫“Excel图片导出”的文件夹,里面整整齐齐地躺着所有被提取出来的图片?
这段VBA宏代码干了什么?简单来说,它就像一个勤劳的机器人,自动帮你遍历了文件里所有的工作表,找到了每一张图片,然后执行了“复制-粘贴-导出”的动作,比你手动操作快一万倍,还不会出错。
注意:使用VBA需要你的Excel启用宏。如果默认是禁用的,Excel顶部会有一个黄色的安全警告,点击“启用内容”即可。
复古但有效的老派方法:另存为网页
如果上面两种方法你都觉得有点“硬核”,或者因为某些原因无法使用,还有一招相对“古老”但依然有效的方法。
那就是,把Excel文件另存为网页。
这个操作简单粗暴,不需要改后缀,也不需要写代码。
- 打开你的Excel文件。
- 点击左上角的“文件” -> “另存为”。
- 在“保存类型”的下拉菜单里,不要选默认的“Excel 工作簿 (.xlsx)”,而是选择“网页 (.htm; .html)*”。
- 选好保存位置,点击“保存”。
保存之后,你会得到一个.html的网页文件,以及一个与它同名的文件夹。比如你保存成“产品列表.html”,就会同时生成一个“产品列表.files”的文件夹。
玄机就在这个文件夹里。
打开那个.files文件夹,你会发现,表格里的所有图片,都静静地躺在里面了!
这个方法的优点是简单易懂,人人都会。但它也有个小缺点:它可能会为了在网页上显示,对图片进行一些压缩或者生成不同尺寸的缩略图,导致文件夹里可能会有一些你不需要的、分辨率较低的图片副本。你需要稍微筛选一下。
但在紧急情况下,这无疑也是一个救命稻草。
最后,我想说两句
折腾了半天,我们终于把那些“嵌”在Excel里的图片给“抠”了出来。但我们是不是该回头想想,这个问题的根源在哪?
把大量图片直接塞进Excel单元格,本身就是一个极其糟糕的数据管理习惯。它会让文件变得异常臃肿,打开缓慢,难以维护。一个健康的表格,应该是纯粹的数据。图片这种非结构化的东西,最好的归宿是单独存放在文件夹里,然后在Excel里通过链接或者路径来引用它们。
所以,下次当你或者你的同事再想往Excel里拖图片的时候,请三思。
不过,在此之前,请先收好这篇文章里的三个“法宝”。它们不能保证你升职加薪,但至少,在某个需要批量导出图片的加班深夜,它们能让你提前一个小时回家,这,就足够了。从此,你就是那个能从Excel‘炼’出图片的大神。
【Excel里的图片,简直就是个噩梦。】相关文章:
excel圆圈怎么打出来的12-06
excel中怎么做饼图12-06
怎么把Excel转换成CSV12-06
word表格怎么粘贴到excel表格12-06
excel中 符号怎么打出来12-06
怎么设置excel的密码保护12-06
Excel里的图片,简直就是个噩梦。12-06
讲excel怎么复制单元格?12-06
在excel中怎么使用if函数12-06
excel的文本框怎么删除12-06
怎么合并excel表格单元格12-06
怎么删除excel的文本框12-06
excel圈数字怎么打出来12-06