直接上源码~
import os import shutil #需要install安装这个shutil模块 import time import tkinter as tk from tkinter import filedialog import openpyxl from openpyxl.drawing.image import Image root = tk.Tk() root.withdraw() print('开始运行~') time.sleep(1) print('''运行步骤: 1.需要新建一个空文件夹,用来存储图片 2.根据提示,选择项目文件夹的所在地址 3.根据提示,选择element表格的所在地址 4.根据提示,输入想要提取的文件类型(jpg、png、raw等) 5.根据提示,选择新建的空文件夹的所在地址 6.根据提示,输入element表格中,图片名称所在列(输入字母:A/B/C/D) 7.根据提示,输入element表格中,导入的图片应该放置的列(输入字母:A/B/C/D)''') time.sleep(1) print('''第1步: 请新建一个空文件夹,用来存储图片''') time.sleep(3) print('''第2步: 请选择项目文件夹所在的地址''') time.sleep(2) data_path = filedialog.askdirectory() #2.读取的文件所在路径 time.sleep(1) print('''第3步: 请选择element表格的所在地址''') time.sleep(1) element = filedialog.askopenfilename() #3.element表格的所在地址 time.sleep(1) a = input('''第4步: 请输入想要提取的文件类型(目前只支持png),注意要小写~''') #4.读取的文件类型 time.sleep(2) print('''第5步: 请选择新建的空文件夹的所在地址''') time.sleep(2) new_path = filedialog.askdirectory() #5.新建的空文件夹的所在地址 time.sleep(1) image_name_column =input('''第6步: 请输入element表格中,图片名称所在列(输入字母:A/B/C/D):''') #6.图片名称所在列(输入字母:A/B/C/D) image_column =input('''第7步: 请输入element表格中,导入的图片应该放置的列(输入字母:A/B/C/D):''') #7.导入的图片应该放置的列(输入字母:A/B/C/D) def one(): for root,dirs,files in os.walk(data_path): for file in files: if file.endswith(a): #读取的文件类型,提取a old_file_path = os.path.join(root,file) if not os.path.exists(new_path): os.makedirs(new_path) new_file_path = new_path + '/' +file print(new_file_path) shutil.copyfile(old_file_path,new_file_path) print('图片全部导出结束!' '等待element表进行对比') #结束通知 wb = openpyxl.load_workbook(element) # 打开excel工作簿 ws = wb.active # 获取活跃工作表 def two(): for i, e in enumerate(ws[image_name_column], start=1): # 取出第A列内容,从第二个算起 image_file_path = os.path.join(new_path, f"{e.value}.png") # 图片路径 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(element) # 保存 print('执行结束') one() two()