我使用python 3.7编写了一个小脚本,该脚本可以自动执行以下操作:
->在桌面上打开特定的应用程序
->加载excel工作簿并读取包含计时的列
->从excel(每行)中提取时间,然后转到打开的应用程序并导航至时间
-> PRTSC在桌面上并保存为temp.png
->进入Excel并在同一工作簿中创建一个新工作表,然后粘贴temp.png
import pywinauto
import openpyxl
from PIL import ImageGrab
#starts a application
#loads a workbook
for i in range(2,ws.max_row+1):
#grabs the timing from the row of a column
#navigates in the application using the timing
wb.create_sheet(s)
dlg=app.top_window() #my application is on top
dlg.type_keys('{PRTSC}')
time.sleep(1)
ws1=wb[s]
im = ImageGrab.grabclipboard()
im.save('temp.png','PNG')
img = drawing.image.Image('temp.png')
time.sleep(1)
j+=1
ws1.add_image(img,'A'+str(40*j+1)) #pastes the image after every 40 cells
time.sleep(1)
wb.save(newsample.xlsx)
因此,脚本执行得很好,并且我获得了带有图像的新excel(newsample.xlsx),但是这里的问题是所有图像只是最后一步捕获的最新图像(temp.png)
我认为drawing.image.Image / add_image行有问题
我应该在循环的每个步骤中保存wb吗?
或者还有其他用于捕获图像并粘贴到excel中的包/模块吗?