Python批量提取Excel中图片并按某列重命名

编程入门 行业动态 更新时间:2024-10-11 23:26:54

Python批量提取Excel中图片<a href=https://www.elefans.com/category/jswz/34/1689949.html style=并按某列重命名"/>

Python批量提取Excel中图片并按某列重命名

场景

客户发了一个物料列表,里面有物料编码、物料名称、图片等信息,有一万多行数据,希望我们能把图片导入到金蝶云星空的物料列表中。

实现

金蝶云星空是有导入图片的功能,尝试了一下可用。所以分以下步骤去实现批量导入。

1、从Excel中提取图片(本文实现)

为了第二步不一次性导入过多的物料,先对Excel分成多张表后再提取。

2、按云星空导入图片功能的Excel模板整理格式

from openpyxl import load_workbook
from openpyxl_image_loader import SheetImageLoaderpath = r'F:\导出图片\\'   # Excel文件路径
saveDir = "F:\导出图片\\"  # 图片存储路径wb = load_workbook(path + '你的文件名.xlsx')  # Excel文件名
ws = wb['Sheet1'] #你的工作簿
image_loader = SheetImageLoader(ws)
num = ws.max_row  # 总行数for i in range(2, num+1):  #  从第2行开始,总行数要+1try:name = ws['E'+str(i)].value # 文件名所在的列image = image_loader.get('D'+str(i)) # 列的图片image.save(saveDir + name + ".jpg")# 排除没有图片,或图片超出单元格的情况except ValueError:print("这一行没有图片:" ,i)

报错,OSError: cannot write mode P as JPEG

我这里只要不是rgb就转成rgb。这样就能全部保存成.jpg格式,方便我后面整理。有些不能转换的就只能保存成.png格式。

改了一通没有报错了,但发现有几种情况不报错、也不保存图片:1、格式是JPEG格式存不下来先转换一下再保存。2、单元格里不是图片,是文字......(不知道客户咋想的,放个文字)

修改后代码如下:

from openpyxl import load_workbook
from openpyxl_image_loader import SheetImageLoaderpath = r'F:\导出图片\\'   # Excel文件路径
saveDir = "F:\导出图片\\"  # 图片存储路径wb = load_workbook(path + '1-200.xlsx')  # Excel文件名
ws = wb['Sheet1'] #你的工作簿
image_loader = SheetImageLoader(ws)
num = ws.max_rowfor i in range(2, num+1):  #  从第2行开始,总行数要+1try:name = ws['E'+str(i)].value # 文件名image = ws['D' + str(i)].value  # 单元格内有文字if image != None:print("这一行是文字:" ,i)else:image = image_loader.get('D'+str(i)) # 列的图片gs=image.formatif gs =='PNG':image.save(saveDir + name + ".PNG")elif gs == 'JPEG': #图片是JPEG格式,先转换image.convert('RGB')image.save(saveDir + name + ".PNG")# 排除没有图片,或图片超出单元格的情况except ValueError:print("这一行没有图片:" ,i)

Excel表如下:

提取后的结果如下

一些可能导致异常的情况

1、可能图片超出单元格,导致读取不到

调整图片在单元格内

2、可能该单元格内没有图片或单元格内是文字

3、可能图片格式不符合,读取不到

更多推荐

Python批量提取Excel中图片并按某列重命名

本文发布于:2024-03-08 13:38:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721032.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:并按   批量   重命名   图片   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!