Hi~大家好!我是小刀!
今天分享一份小案例,这里有一份excel姓名名单,想要根据姓名在旁边插入对应的图片图片都是命名好的,如果自己一个一个插入需要很久,所以跟大家分享python和excel批量插入图片的方法,下面就让我们来一起操作下吧!
一份表格:
需要插入的图片:
excel关于插入对应的内容图片的方法有挺多的,这里讲解我认为最简单的一种,无需VBA代码和工具,只需要一点数据排序技巧即可,下面开始实战。
先选择姓名
列,点击数据
选项卡,在排序和筛选
组下选择升序
排序:
根据自己的喜好,设置好存放图片单元格的行高
和列宽
。
插入图片,这步可能与其它软件版本不同,但最终结果是插入对应的图片即可:点击插入
选项卡,在插图组中选择图片
下拉箭头,再选择此设备
:
在弹出的插入图片
窗口中选择需要插入的图片:
插入的图片可能大小不一,所以我们先根据单元格大小调整图片的大小。
调整图片大小时需先把图片属性中的锁定纵横比
给去掉,而图片大小最好根据像素设置:
将最前面的一张图片放在最后一个单元格中,接着选择全部图片,然后点击图片格式选项卡,在排序组中选择对齐,然后选择水平居中和纵向分布,最后调整到合适的位置。
结果:
在实现之前,我们需要明确知道具体的任务目标,是利用python根据对应内容,向excel插入对应的图片;而在材料中我们得知,excel表格A
列为对应内容
,B
列为需要插入对应的图片列
,图片具有特定名称。
① 取得excel表格中A列的对应内容
② 根据内容取出图片
③ 根据A列对应内容,向B列写入图片
所以本文用python向excel插入图片,使用的库是openpyxl
和os
,这两个都是老熟人了,安装可用pip命令进行安装。
pip install 库名
用openpyxl
库对excel文件进行读取和写入,其中用到openpyxl
库中的Image
模块,而他是基于PIL
库构造而成,PIL
库大家也知道,是一个编辑图片的神器。os
库用于获取图片路径。
下面是完整源码,相关内容后面都添加了注释:
import openpyxl
from openpyxl.drawing.image import Image
import os
excel_file_path = 'image.xlsx'
image_name_column = 'A'
image_column = 'B'
image_path = './图片'
wb = openpyxl.load_workbook(excel_file_path) # 打开excel工作簿
ws = wb.active # 获取活跃工作表
for i, e in enumerate(ws[image_name_column], start=1): # 取出第A列内容,从第二个算起
image_file_path = os.path.join(image_path, f"{e.value}.jpg") # 图片路径
try: # 因获取A列的第一行是标题,这里防止报错结束程序
img = Image(image_file_path) # 获取图片
img.width, img.height = (120, 120) # 设置图片大小
# 调整表格列宽和行高
ws.column_dimensions[image_column].width = 15
ws.row_dimensions[i].height = 90
ws.add_image(img, anchor=image_column + str(i)) # 插入对应单元格
except Exception as e:
print(e)
wb.save(excel_file_path) # 保存
print('save..')
结果:
以上就是本文的全部内容了,如果你喜欢或者对你有帮助,请给我点个赞和在看吧!
本文分享自 Python与Excel之交 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有