openpyxl добавляет изображение в l oop, добавляет только последние изображения для всех изображений - PullRequest
1 голос
/ 08 января 2020

У меня есть приложение, откуда я беру изображение и добавляю файл .xls. Я делаю это в al oop, чтобы добавить несколько изображений. Однако я обнаружил, что только последнее изображение добавлено во все места. Я упростила свой код и добавила сюда, делает то же самое. Здесь используется захват экрана, и с помощью функции паузы я меняю экран, чтобы изображения были другими. Он делает то же самое, только добавляет последний скриншот во все локации. Пожалуйста, дайте мне знать, где я иду не так. Извините за код, я не программист.

import openpyxl
import PIL
from PIL import ImageGrab
from openpyxl.drawing.image import Image

def pause():
    programPause = input("Press <enter> key")   


column_offset=10
row_offset=20
column_start=3
row_start=3

def screen_capture():
    img=ImageGrab.grab()
    img.save('test.jpg','JPEG')

wb = openpyxl.Workbook()
ws = wb.active
rowi=row_start
for x in range(1,3): 
    columnj = column_start
    for y in range(1,2):
        screen_capture()
        img1=Image('test.jpg')
        img1.anchor = ws.cell(row=rowi, column=columnj).coordinate
        ws.add_image(img1)
        columnj = columnj+column_offset
        pause()
    rowi=rowi+row_offset
wb.save('Save_test_data.xlsx')
wb.close()

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Следуя вашему предложению, я изменил код. Это работает так, спасибо. Дайте мне знать, если есть лучший способ сделать

import openpyxl
import PIL
from PIL import ImageGrab
from openpyxl.drawing.image import Image
import os
def pause():
    programPause = input("Press <enter> key")   


column_offset=10
row_offset=20
column_start=3
row_start=3

def screen_capture(a,b):
    img=ImageGrab.grab()
    img.save('test'+str(a+b)+'.jpg','JPEG')

wb = openpyxl.Workbook()
ws = wb.active
rowi=row_start
for x in range(1,3): 
    columnj = column_start
    for y in range(1,2):
        screen_capture(x,y)
        img1=Image('test'+str(x+y)+'.jpg')
        img1.anchor = ws.cell(row=rowi, column=columnj).coordinate
        ws.add_image(img1)
        columnj = columnj+column_offset
        pause()
    rowi=rowi+row_offset
wb.save('Save_test_data.xlsx')
wb.close()
for x in range(1,3): 
    for y in range(1,2):
        os.remove('test'+str(x+y)+'.jpg')
0 голосов
/ 08 января 2020

Вы должны присвоить каждому файлу изображения свое имя.

...