Экспорт изображений из Excel с использованием Python с определенным именем - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь прочитать Excel с помощью Python, Excel имеет два столбца с именем Product_Name и второй - LOGO.Название продукта, как следует из названия, содержит название продукта, например «Рыба», «Ноутбук», в то время как «Вторые столбцы» содержат логотип этого названия продукта. Я пытаюсь сохранить изображения из столбца «ЛОГОТИП» с именем изображения в качестве имени продукта. Ниже код работает, но имя продуктаи сохраненные изображения не совпадают

import win32com.client       # Need pywin32 from pip
from PIL import ImageGrab    # Need PIL as well
import os
excel = win32com.client.Dispatch("Excel.Application")
workbook = excel.ActiveWorkbook
wb_folder = workbook.Path
wb_name = workbook.Name
wb_path = os.path.join(wb_folder, wb_name)
print(wb_path)
print("Extracting images from %s" % wb_path)
image_no = 0
for sheet in workbook.Worksheets:
    if(sheet.Name == "Ch"):    
        for shape,r in zip(sheet.Shapes,range(4,200)):
            if shape.Name.startswith("Picture"):
                image_no += 1
                print("---- Image No. %07i ----" % image_no)
                print(r)
                imagen = sheet.Cells(r,'E').value
                filename = sheet.Cells(r,'E').value + ".jpg"
                file_path = os.path.join (wb_folder, filename)
                print("Saving as %s" % file_path)    # Debug output
                shape.Copy() # Copies from Excel to Windows clipboard
                # Use PIL (python imaging library) to save from Windows clipboard
                # to a file
                image = ImageGrab.grabclipboard()
                print(image)
                try:
                    image.save(file_path,'jpeg')
                except AttributeError:
                    F = open('error.txt','w') 
                    F.write(imagen)
                    F.close()

1 Ответ

0 голосов
/ 09 января 2019

Следующий скрипт извлекает все изображения из файла Excel и присваивает им имена со значением «Имя канала»:

import re
from PIL import ImageGrab
import win32com.client as win32

FILE = r'C:\Users\user\Desktop\so\53994108\logo.xlsx'
CELLS = [(4, 5, 'F'), (3, 3, 'D')]

excel = win32.gencache.EnsureDispatch('Excel.Application')
workbook = excel.Workbooks.Open(FILE)
for i, worksheet in enumerate(workbook.Sheets):
    row = CELLS[i][0]
    while True:
        name = worksheet.Cells(row, CELLS[i][1]).Value
        if not name:
            break
        name = re.sub(r'\W+ *', ' ', name)
        rng = worksheet.Range('{}{}'.format(CELLS[i][2], row))
        rng.CopyPicture(1, 2)
        im = ImageGrab.grabclipboard()
        im.save('{}.jpg'.format(name))
        row += 1

Итак, у меня есть следующие изображения в конце:

enter image description here

...