找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1087|回复: 1

[求助] python导出excel图片并命名

0

主题

1

帖子

1

积分

贫民

积分
1
hyg1025 发表于 2022-12-28 15:25:30 | 显示全部楼层 |阅读模式
本帖最后由 hyg1025 于 2022-12-28 15:48 编辑

请问各路大神,我有一个excel文件,A列是图片,B列是产品款号(款号有重复的,因为有同一个款号,多种颜色,颜色数量不一定,有可能一个颜色,也有可能八个颜色)
我想用python,批量导出EXCEL文件中A列的图片,然后用B列款号命名,如果有同款号不同颜色的图片,就在款号后面加上下划线+1(比如有一个款号'885478'有三种颜色,那么就用885478.jpg,885478_1.jpg,885478_2.jpg,885478_3.jpg),如果只有一个颜色就是885478.jpg和885478_1.jpg这样命名,我目前只会写只有一个颜色的批量导出和命名,如果有重复的,我不知道该怎么去写了!以下是我写出来的源码

EXCEL文件在此附件中
测试款.xlsx (35.19 KB, 下载次数: 2)
回复

使用道具 举报

0

主题

14

帖子

14

积分

贫民

积分
14
wjb986555360 发表于 2023-3-8 23:20:51 | 显示全部楼层
已解答

from tkinter import filedialog
from tkinter import messagebox
from openpyxl import load_workbook
from openpyxl_image_loader import SheetImageLoader
import tkinter as tk
import os
def get_pic():
    if os.path.exists(save_dir)!=True:
        os.mkdir(save_dir)
    spu = spu_entry.get().upper()
    image = img_entry.get().upper()
    wb = load_workbook(file_folder)
    ws = wb.active
    img_loader = SheetImageLoader(ws)
    dict1={}
    for i in range(1,ws.max_row):
        print(i)
        try:
            kuanhao=ws[spu + str(i)].value
            if kuanhao not in dict1.keys():
                dict1[kuanhao]=[0]
                file_name =save_dir +'\\' +kuanhao + '.jpg'
                imgs = img_loader.get(image + str(i))
                imgs = imgs.convert('RGB')
                imgs.save(file_name)
                print(file_name)
            else:
                dict1[kuanhao].append(dict1[kuanhao][-1]+1)
                file_name =save_dir +'\\' +kuanhao +'_' +str(dict1[kuanhao][-1])+'.jpg'
                imgs = img_loader.get(image + str(i))
                imgs = imgs.convert('RGB')
                imgs.save(file_name)
               
        except ValueError:
            print('这一行没有图片')
    root.destroy()

if __name__ == '__main__':
    save_dir = r'C:\Users\weijiangbin\Desktop\img_221228'
    file_folder = filedialog.askopenfilename(title='请选择文件',filetypes=[('EXCEL文件','*.xlsx')])
    root = tk.Tk()
    root.title('输入信息框!')
    spu_name = tk.StringVar()
    img_name = tk.StringVar()
    spu_label = tk.Label(root,text='请输入款号所在列(英文):')
    spu_label.grid(row=0,column=0)
    spu_entry = tk.Entry(root,textvariable=spu_name)
    spu_entry.grid(row=0,column=1)
    img_label = tk.Label(root,text='请输入图片所在列(英文):')
    img_label.grid(row=1,column=0)
    img_entry = tk.Entry(root,textvariable=img_name)
    img_entry.grid(row=1,column=1)
    confirm_button = tk.Button(root,text="确定",width=10,command=get_pic)
    confirm_button.grid(row=2,sticky='e')
    root.mainloop()
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表