自动化办公 | 批量将Excel中的url链接转成图片

Aidan075
• 阅读 1945

自动化办公 | 批量将Excel中的url链接转成图片

大家好,我是小五🚀

最近在交流群看到了一个问题

自动化办公 | 批量将Excel中的url链接转成图片

小五对这个比较感兴趣,所以就要了示例数据找时间尝试做了一下。为啥感兴趣呢?因为前段时间刚帮群友做过一个相反的案例——将Excel中的图片下载到本地

需求简介

具体原始数据和期望结果如下图所示:

自动化办公 | 批量将Excel中的url链接转成图片

同时还有两点要求

自动化办公 | 批量将Excel中的url链接转成图片

思考了一下,我选择了一个折中的办法,先依照B列的url链接将图片下载到本地,再将本地图片依次插入B列的原位置。

自动化办公 | 批量将Excel中的url链接转成图片

这次小五选择使用python,来完成本次的自动化办公任务。

操作代码

首先我们需要先构造两个函数,分别用来下载图片和插入图片。

下载图片

自动化办公 | 批量将Excel中的url链接转成图片

def download_img(url,file_name):  
    res = requests.get(url)  
    img = open(file_name, 'wb')  
    img.write(res.content)  
    img.close()  

简单解释一下,requests发起get请求拿到图片的信息。

open打开文件,以file_name(比如111.jpg)为文件名,wb代表以二进制覆盖写。

自动化办公 | 批量将Excel中的url链接转成图片

  • res.text ==> 获取文本

  • res.content ==> 下载内容

这里我们下载图片使用res.content

插入图片

def insert_img(file_name,cell):  
    img = Image(file_name)  
    img.width,img.height=72,72  
    ws.add_image(img, cell)  

查阅openpyxl的官方文档可以找到“向Excel中插入图片的语法”👇

自动化办公 | 批量将Excel中的url链接转成图片

可以看到我们只需导入openpyxl子模块下面的Image类,调用函数ws.add_image(img, cell)就能插入图片。

另外我在中间加了一步:img.width,img.height=72,72将图片的宽和高都设置为72,是为了满足要求第②点:将下载的图片尺寸固定下来。

自动化办公 | 批量将Excel中的url链接转成图片

这样我们就构造好了两个函数,下面就可以来调用函数去处理需求了。

wb = load_workbook('将URL转变为图片并以Excel导出.xlsx')  
ws = wb['原始数据']  

for i in range(2,5):  
    name = ws['A'+str(i)].value + '.jpg' ①  
    url = ws['B'+str(i)].value ②  
    download_img(url,name) ③  
    ws['B'+str(i)]="" ④  
    ws.row_dimensions[i].height=54 ⑤  
    insert_img(name,'B'+str(i)) ⑥  

wb.save('结果文件.xlsx')  

代码注释:

  1. 获取A列的值,作为后续被下载图片的名字

自动化办公 | 批量将Excel中的url链接转成图片

  1. 获取B列的值,即待下载图片的url

  2. 下载图片到本地

  3. 将B列的值清空(设置为"")

  4. 设置当前行高为54(为了配合图片的尺寸)

  5. 调用函数插入图片

执行代码,得到结果

自动化办公 | 批量将Excel中的url链接转成图片

成功完成需求🚀

数据&代码下载

如果有小伙伴对本文的操作感兴趣,扫码👇关注「快学Python」在后台回复“图片2” ,即可获取全部案例数据和代码!

自动化办公 | 批量将Excel中的url链接转成图片

人工智能数学基础》数学思维的体操、学习人工智能的基石!通过205个典型范例+185个推导公式+37道经典习题+40个学习难点提示+19个项目,进行数学思想和解决方案的有效实践。

本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/m1lH8Vfa0-SXRR411ZskjA,可扫描二维码进行关注: 自动化办公 | 批量将Excel中的url链接转成图片 如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
vue+element 表格formatter数据格式化并且插入html标签
前言   vue中element框架,其中表格组件,我既要行内数据格式化,又要插入html标签一贯思维,二者不可兼得也一、element表格数据格式化  !(https://oscimg.oschina.net/oscnet/3c43a1cb3cbdeb5b5ad58acb45a42612b00.p
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Aidan075 Aidan075
3年前
自动化办公 | 快速从Excel中提取图片并匹配命名
大家好,我是小五🐶关于自动化办公,之前我思考过好久。到底什么是自动化办公,哪些属于能真正提高我们工作效率的知识,哪些所谓的python自动化办公项目又是伪需求?其实挺难断定的,可能大部分人用不到的一个功能,对于刚需的人却是救命稻草!比如今天的这个需求👇案例需求一个群友在交流群里提出了这样一个问题这是他给出的示例文件,其中F列的商品编码,G列是商品图片。希望能
Aidan075 Aidan075
3年前
自动化办公 | (升级版)批量将Excel中的url链接转成图片②
大家好,我是小五🚀前面我们使用,结果读者后来跟我反馈又遇到了一些问题。于是乎,干脆对前几天的代码升级一波。需求简介具体原始数据和期望结果如下图所示:但这位读者朋友又遇到了一个问题👇解决当url为空时代码停止运行的问题将图片保存到新增文件夹,大概有1.4W张图片,后续删图片有难度第一个问题呢,只需加个判断语句就可以。至于将图片保存到
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这