Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自动化办公 | 快速从Excel中提取图片并匹配命名

自动化办公 | 快速从Excel中提取图片并匹配命名

作者头像
朱小五
发布于 2021-04-21 08:53:02
发布于 2021-04-21 08:53:02
5.9K00
代码可运行
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据
运行总次数:0
代码可运行

大家好,我是小五?

关于自动化办公,之前我思考过好久。到底什么是自动化办公,哪些属于能真正提高我们工作效率的知识,哪些所谓的python自动化办公项目又是伪需求?

其实挺难断定的,可能大部分人用不到的一个功能,对于刚需的人却是救命稻草!

比如今天的这个需求?

案例需求

一个群友在交流群里提出了这样一个问题

这是他给出的示例文件,其中F列的商品编码,G列是商品图片。希望能够将G列的图片提取出来,并以同行的F列商品编码命名。

下面给大家讲讲,如何轻松提取Excel的图片?

最简单的解决办法

其中最简单的办法就是:将原Excel文件后缀名改为压缩包格式(zip、rar等)

这时候只需要解压此压缩包,再依次打开【xl】→【media】文件夹,就可以看到一堆图片。

这些图片就是原本Excel中插入的图片。

是不是很简单?网上python自动化提取Excel中图片的方法,其基本原理也是一样的。

所以大家如果遇到了这种需求,不妨先试试这种方法(包括在Word中提取图片也是同理)

但是这种解决办法在本案例中并不适用。

为什么呢?

整个Excel中有重复的图片,这就会导致压缩包解压后的图片会自动去重,这样我们就没办法给图片匹配命名。

一共126行商品数据,但解压后只提取出了112张图片。

下面继续带大家尝试用不同办法解决这个问题?

VBA 方法

有群友给出了VBA的解法:

先看实现的效果动图

这里公布VBA代码,刚兴趣的同学可以自己学习研究一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sub 导出图片()
    On Error Resume Next
    MkDir ThisWorkbook.Path & "\图片"
    For Each pic In ActiveSheet.Shapes
        If pic.Type = 13 Then
            RN = pic.TopLeftCell.Offset(0, -1).Value
            pic.Copy
            With ActiveSheet.ChartObjects.Add(0, 0, pic.Width, pic.Height).Chart    '创建图片
                .Parent.Select
                .Paste
                .Export ThisWorkbook.Path & "\图片\" & RN & ".jpg"
                .Parent.Delete
            End With
        End If
    Next
End Sub

既然VBA能实现,那自动化办公的另一个巨头——python哥也不能说不行啊。

Python方法

我们可以使用openpyxl来自动提取Excel中的数值,但是对于单元格里的图片就束手无策了。

毕竟它是浮动的。

这里我们需要再安装一个库——openpyxl-image-loader来搭配使用。顾名思义,它的功能就是从单元格获取图像,正好可以实现我们的需求。

表情包(真不错)

具体实现语句如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
path = r'D:\python_code\\'
saveDir = "图片/"

wb = load_workbook(path + '待收集图片sku.xlsx')
ws = wb['Sheet1']
image_loader = SheetImageLoader(ws)

num = ws.max_row
for i in range(2,num+1):
    name = ws['F'+str(i)].value
    image = image_loader.get('G'+str(i))
    image.save(saveDir + name + ".png")

其中image_loader.get()函数就是用来获取单元格的图像,我们只需再将openpyxl获取的F列商品编号作为图片名保存即可。

运行后的结果

可以看到,标注圈出的图片原本是相同的,但仍然被命名为对应的商品编号,这样我们最终提取并命名的图片也就是126张。

说明我们同样解决了这个需求!

所以无论VBA还是python,只要能真正解决我们实际问题的,都是自动化办公的好帮手

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Odin Inspector 系列教程 — 初识 OdinWindow「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162785.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/16
1.5K0
Odin Inspector 系列教程 — 初识 OdinWindow「建议收藏」
Odin Inspector 系列教程 — Dictionary Drawer Settings Attribute[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162804.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
1K0
Odin Inspector 系列教程 — Dictionary Drawer Settings Attribute[通俗易懂]
Odin Inspector 系列教程 — SearchableAttribute「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162779.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
1.1K0
Odin Inspector 系列教程 — SearchableAttribute「建议收藏」
Odin Inspector 系列教程 — Type Filter Attribute
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162838.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
3100
Odin Inspector 系列教程 — Type Filter Attribute
Unity插件——Odin使用心得(一)「建议收藏」
以下为本人测试时环境: VS版本: 2019 Odin版本:3.0.9 Unity版本:2019.3.6
全栈程序员站长
2022/09/13
6.9K0
Unity插件——Odin使用心得(一)「建议收藏」
Odin Inspector 系列教程 — Custom Value Drawer Attribute
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162813.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
6840
Odin Inspector 系列教程 — Custom Value Drawer Attribute
Odin Inspector 系列教程 — Value Dropdown Attribute
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162783.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
1K0
Odin Inspector 系列教程 — Value Dropdown Attribute
Odin Inspector 系列教程 — Show If Attribute
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162801.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
4690
Odin Inspector 系列教程 — Show If Attribute
Odin Inspector 系列教程 — Enum Toggle Buttons Attribute
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162837.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
7940
Odin Inspector 系列教程 — Enum Toggle Buttons Attribute
Odin Inspector 系列教程 — Hide If Attribute[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162810.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/16
6440
Odin Inspector 系列教程 — Hide If Attribute[通俗易懂]
Odin Inspector 系列教程 — Label Text Attribute「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162792.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
7340
Odin Inspector 系列教程 — Label Text Attribute「建议收藏」
Odin Inspector 系列教程 — Hide Reference Object Picker Attribute[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162822.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
8690
Odin Inspector 系列教程 — Hide Reference Object Picker Attribute[通俗易懂]
Odin Inspector 系列教程 — Indent Attribute「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162816.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
3450
Odin Inspector 系列教程 — Indent Attribute「建议收藏」
【100个 Unity实用技能】 | 将Dictionary字典中的数据序列化 到Unity Inspector监视器面板
由于默认的Dictionary是不能被序列化到Unity的监视器面板中的,所以就需要做一些额外处理来让其显示到Inspector上以满足我们的配置。
呆呆敲代码的小Y
2023/03/09
4.5K0
【100个 Unity实用技能】 | 将Dictionary字典中的数据序列化 到Unity Inspector监视器面板
Odin Inspector 系列教程 — Inline Property Attribute[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162791.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
4870
Odin Inspector 系列教程 — Inline Property Attribute[通俗易懂]
Unity Odin从入门到精通(三):静态检查器详解
前言:开发者可以使用静态检查器来选择项目工程、Unity引擎、.Net框架中所有的类型,并查看其所有的静态成员。
全栈程序员站长
2022/09/13
1.4K0
Unity Odin从入门到精通(三):静态检查器详解
【Unity游戏开发】初探Unity动画优化
  在最近的优化工作中,马三发现项目中的动画文件内存占比实在是太大了,峰值竟然有200多mb,很明显需要进行优化。经过一番网上查阅资料并结合自己实际操作以后,得到一些需心得体会,在这里马三记录一下并且分享给大家,希望对大家能有一些帮助。
马三小伙儿
2021/06/10
3.4K0
【Unity游戏开发】初探Unity动画优化
【Odin插件学习】新手上手示例:一个简单的角色面版
大家好,又见面了,我是你们的朋友全栈君。 前置准备 创建脚本,例 SimpleCharacterPanel.cs 添加Odin库using指令 using Sirenix.OdinInspector; 需求分析 我们可以将面版主要分为如下四个部分: 角色基础信息 名称 等级 经验值 角色模型 角色属性 经验上限(升级所需经验) 攻击力 血量上限 蓝量上限 血条 蓝条 模拟操作(金手指) 经验值增加 其他 初始化 等级提升 #region 属性 public string m_CharacterNa
全栈程序员站长
2022/09/13
7950
【Odin插件学习】新手上手示例:一个简单的角色面版
List、Set、数据结构、Collections
数据结构 栈:先进后出 队列:先进先出 数组:查询快,增删慢 链表:查询慢,增删快 红黑树:趋近于平衡树,查询的速度非常快,查询叶子节点最大次数和最小次数不能超过2倍。
全栈程序员站长
2022/06/29
5480
List、Set、数据结构、Collections
java_List、Set、Conllections工具类
List接口特点: 1. 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。 2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。 3. 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
咕咕星
2020/08/19
4260
java_List、Set、Conllections工具类
推荐阅读
相关推荐
Odin Inspector 系列教程 — 初识 OdinWindow「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验