2025年2月19日 星期三 甲辰(龙)年 腊月十九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python3,区区10行代码,批量把图片插入Excel指定单元格中

时间:03-19来源:作者:点击数:46

1、引言

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

小鱼:啥问题呢?

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

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

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

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

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

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

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

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

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

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

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

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

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

小鱼:那… 等我会啊…

在这里插入图片描述

2、代码实战

2.1 代码示例

代码示例

  • # -*- coding: utf-8 -*-
  • # @Time : 2022-12-05
  • # @Author : Carl_DJ
  • '''
  • 实现功能:
  • 在excel中,对应的名称后面,插入图片
  • '''
  • import openpyxl,PIL
  • from openpyxl.drawing.image import Image
  • import os
  • #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.active
  • for i, v in enumerate(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和高85
  • ws.column_dimensions[img_column].width = 20
  • ws.row_dimensions[i].height = 85
  • # 图片插入名称对应单元格
  • ws.add_image(img, anchor=img_column + str(i))
  • #保存
  • wb.save(excel_path) # 保存
  • #关闭
  • wb.close()
  • print(f'保存完成')

运行结果

在这里插入图片描述

2.2 遇到问题及处理方案

2.2.1 遇到问题

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

确实,是这样的。

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')
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门