excel 第一列是字符,第二列是图片
from email.mime import image
from openpyxl import load_workbook
from openpyxl_image_loader import SheetImageLoader
def extract_images(slsx_fn):
xlspath=r'c:/'#excell路径
savedir="c:/" #图片保存路径
ws=load_workbook(xlspath+slsx_fn).worksheets[0]
image_loader=SheetImageLoader(ws)
for index,row in enumerate(ws.rows,start=1):
if image_loader.image_in(f'B{index}'):
image=image_loader.get(f'B{index}')
name=row[0].value
image.save(savedir+name+'.jpg')
extract_images('shao.xlsx')
参考:
Python 批量提取Excel中的图片,图片文件名按指定列存储_霍蛋的博客-CSDN博客,
他的代码如下:
from openpyxl import load_workbook
from openpyxl_image_loader import SheetImageLoader
path = r'C:/Users/an/Desktop/guang2/' # Excel文件路径
saveDir = "C:/Users/an/Desktop/guang2/tu/" # 图片存储路径
wb = load_workbook(path + 'a.xlsx') # Excel文件名
ws = wb['Sheet1']
image_loader = SheetImageLoader(ws)
num = ws.max_row # 总行数,我也不知道为什么是row
for i in range(2, num+1): # 从第2行开始,总行数要+1
try:
name = ws['A'+str(i)].value # A列的文件名
# print(i)
image = image_loader.get('C'+str(i)) # C列的图片
image.save(saveDir + name + ".jpg") # 以Ai为名,存图片Ci
# 排除没有图片,或图片超出单元格的情况
except ValueError:
print("caonm这一行没有图片:" ,i)
'''
测试
image=image_loader.get('C2') # 提取C2中的图片
image.show()
'''