Python3,区区10行代码,批量把图片插入Excel指定单元格中,省下时间去烫头发。

简介: 图片可以不下载,但是,头发不能不烫!

1、引言

小屌丝:鱼哥, 想请教你个问题。

小鱼:啥问题呢?

小屌丝:我想把图片插入到excel里面

小鱼:这个还用问我? 你是昨晚喝多了?

小屌丝:不是的,我是想把图片插入到excel单元格里面

小鱼:这么简单的操作,你竟然也说得出口!

小屌丝:不是的,我是想批量插入图片

小鱼:excel不支持批量插入图片功能??

小屌丝:是的,我想把图片批量按照名称和统一尺寸,放入到单元格里面

小鱼:昂… 这个 excel也能批量操作啊。

小屌丝:太费劲了, 我有100多张图片, 我还得手动调单元格的大小,

小鱼:那确实挺多的, 那你就慢慢搞一下了,闲着也是闲着…

小屌丝:鱼哥,别啊,节省的时间,去泡个澡,剪个头发,不舒服吗?

小鱼:也对,不过现在剪头发都是198了…

小屌丝:没事鱼哥, 我有券…

小鱼:那… 等我会啊…



2、代码实战

2.1 代码示例

代码示例




# -*- coding: utf-8 -*-# @Time   : 2023-01-03# @Author : Carl_DJ'''实现功能:    在excel中,对应的名称后面,插入图片'''importopenpyxl,PILfromopenpyxl.drawing.imageimportImageimportos#excel文件路径excel_path='./pic/image.xlsx'#图片名称为A列img_name_column='A'#图片写入B列img_column='B'#读取图片的地址img_path='./data/picture'#转换图片格式,强制转换成jpg格式# img_type = PIL.Image.open(img_path).convert("RGB")# img_type.save(img_path, 'jpeg')#打开excel文件wb=openpyxl.load_workbook(excel_path)
#获取sheet页ws=wb.activefori, vinenumerate(ws[img_name_column], start=1):
#图片路径img_file_path=os.path.join(img_path, f"{v.value}.jpg")
#获取图片img=Image(img_file_path)
#设置图片的大小img.width, img.height= (110, 110)
# 设置表格的宽20和高85ws.column_dimensions[img_column].width=20ws.row_dimensions[i].height=85# 图片插入名称对应单元格ws.add_image(img, anchor=img_column+str(i))
#保存wb.save(excel_path)  # 保存#关闭wb.close()
print(f'保存完成')

运行结果


image.png

2.2 遇到问题及处理方案

2.2.1 遇到问题

这里,小鱼在运行脚本时, 遇到一个错误提示,

图片的类型是 “.webp”,如下:

image.png


我首先看图片的后缀,是不是.webp,发现,已修改为.jpg

image.png

于是,小鱼就想到了,是不是下载图片的时候, 虽然图片的后缀改成.jpg,但是,图片的本质,还是**.webp**格式,

为了验证小鱼的猜想,我就重新下载一次百度图片,如下:

image.png

确实,是这样的。


2.2.2 解决方案

遇到这种问题,两种解决方案:


  • 1、直接下载jgp格式的图片

可以参照小鱼的这篇《Python3,5行代码,让你拥有无限量壁纸美图》 ,这样下载的都是jpg格式的图片。


  • 2、代码强制转换


强制转换图片格式:


#转换图片格式,强制转换成jpeg格式img_type=PIL.Image.open(img_path).convert("RGB")
img_type.save(img_path, 'jpeg')


3、总结

看到这里,今天的分享就差不多结束了。

在2022年初的时候, 小鱼把图片写入到excel里面,得到的反馈很不错。




今天,在2023年的年初 ,我们把图片插入到单元格中,可算是把图片与excel玩的明明白白的。

当然,

关于python的更多更有趣的知识, 可以关注小鱼的 Python专栏。

我是小鱼:


  • 阿里云社区 专家博主;
  • CSDN 博客专家;
  • 51CTO 博客专家;
  • 51 认证讲师;
  • 企业金牌面试官;

关注我,带你学习更多更有趣的Python知识。


目录
相关文章
|
缓存 Java 程序员
函数式编程的Java编码实践:利用惰性写出高性能且抽象的代码
本文会以惰性加载为例一步步介绍函数式编程中各种概念,所以读者不需要任何函数式编程的基础,只需要对 Java 8 有些许了解即可。
函数式编程的Java编码实践:利用惰性写出高性能且抽象的代码
|
数据可视化 数据挖掘 数据处理
Pandas转置技巧:轻松翻转你的数据表
Pandas转置技巧:轻松翻转你的数据表
804 0
|
JSON Java API
Spring Boot中使用OpenAPI生成API文档
Spring Boot中使用OpenAPI生成API文档
|
计算机视觉
【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决
【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决
|
Ubuntu C语言
【Ubuntu20.04】安装gcc11 g++11, Ubuntu18.04
以上就是在Ubuntu 20.04和Ubuntu 18.04上安装gcc11和g++11的步骤。
3222 0
|
Linux
Linux下rz/sz安装及使用方法 (不需要借助ftp传输工具)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/81606337   一、工具说明       在SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz/sz命令来上传/下载文件. 对于某些linux版本, rz/sz默认没有安装所以需要手工安装。
2674 0
|
网络虚拟化 网络架构 文件存储
DIY nas 之ZeroTier构建异地局域网
ZeroTier是一款用于构建异地虚拟局域网的工具,让你在世界任何地方访问家里的设备或者其他客户端
765 0
|
数据挖掘 数据处理 Python
Python设置excel默认属性信息(作者、标题等)
更多内容关注我的微信公众号:python学习杂记
803 0
vue3—使用element-plus表格导出excel表格(带图片)
今天制作后台管理系统,有一个二维码管理页面,要求把表格内的数据全部导出为Excel表格。 表格内有二维码图片,也要导出,制作的第一版是直接将图片的链接导出,但是要求导出能直接看的图片,所以就有了第二版。