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

大家好,我是小五🚀

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

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

需求简介

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

同时还有两点要求

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

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

操作代码

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

下载图片

1def download_img(url,file_name): 2    res = requests.get(url) 3    img = open(file_name, 'wb') 4    img.write(res.content) 5    img.close() 6

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

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

  • res.text ==> 获取文本

  • res.content ==> 下载内容

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

插入图片

1def insert_img(file_name,cell): 2    img = Image(file_name) 3    img.width,img.height=72,72 4    ws.add_image(img, cell) 5

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

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

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

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

1wb = load_workbook('将URL转变为图片并以Excel导出.xlsx') 2ws = wb['原始数据'] 3 4for i in range(2,5): 5    name = ws['A'+str(i)].value + '.jpg' ① 6    url = ws['B'+str(i)].value ② 7    download_img(url,name) ③ 8    ws['B'+str(i)]="" ④ 9    ws.row_dimensions[i].height=54 ⑤ 10    insert_img(name,'B'+str(i)) ⑥ 11     12wb.save('结果文件.xlsx') 13

代码注释:

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

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

  2. 下载图片到本地

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

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

  5. 调用函数插入图片

执行代码,得到结果

成功完成需求🚀

数据&代码下载

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

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

本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/m1lH8Vfa0-SXRR411ZskjA,可扫描二维码进行关注: 如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

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

大家好,我是小五🐶关于自动化办公,之前我思考过好久。到底什么是自动化办公,哪些属于能真正提高我们工作效率的知识,哪些所谓的python自动化办公项目又是伪需求?其实挺难断定的,可能大部分人用不到的一个功能,对于刚需的人却是救命稻草!比如今天的这个需求👇案例需求一个群友在交流群里提出了这样一个问题这是他给出的示例文件,其中F列的商品编码,G列是商品图片。希望能