openpyxl 在循环中添加图像,只为所有图像添加最后一张图像
openpyxl adding image in loop, adds only last images for al the images
我有一个应用程序,我可以从中抓取图像并添加 .xls 文件。我正在循环执行此操作,以便添加多个图像。但是我发现只有最后一张图片被添加到所有位置。我简化了我的代码并在此处添加,做同样的事情。这里使用了屏幕抓取,并使用暂停功能更改屏幕,因此图像会有所不同。它做同样的事情,只是将最后一个屏幕截图添加到所有位置。请让我知道我哪里出错了。请原谅我的代码,我不是程序员。
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()
您必须为每个图像文件指定不同的名称。
根据您的建议,我修改了代码。它是这样工作的,谢谢。让我知道是否有更好的方法
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')
我有一个应用程序,我可以从中抓取图像并添加 .xls 文件。我正在循环执行此操作,以便添加多个图像。但是我发现只有最后一张图片被添加到所有位置。我简化了我的代码并在此处添加,做同样的事情。这里使用了屏幕抓取,并使用暂停功能更改屏幕,因此图像会有所不同。它做同样的事情,只是将最后一个屏幕截图添加到所有位置。请让我知道我哪里出错了。请原谅我的代码,我不是程序员。
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()
您必须为每个图像文件指定不同的名称。
根据您的建议,我修改了代码。它是这样工作的,谢谢。让我知道是否有更好的方法
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')