目标是从 Excel 文件中的 A2 中获取值并将其粘贴到另一个应用程序的特定位置。 然后,从同一 Excel 文件中的 B2 获取值并将其粘贴到另一个应用程序的不同位置。 完成后,我将截取屏幕截图,在 Excel 文件的 C2 中输入“是”,然后在 Excel 文件的第 3 行中重复该过程。 我想通过 Excel 数据集中的最后一行来完成此操作。
底层代码不会接受 A2 中的 0 值(我需要它),并且我收到此错误:
import pyautogui as pyauto
import xlwings as xlw
import time
from pynput import mouse
wbmd = xlw.Book('Member_Details.xlsx')
md_coords = wbmd.sheets["Coords"]
mdlr = md_coords.cells (md_coords.cells.last_cell.row,3).end('up').row
dlr = md_coords.cells(md_coords.cells.last_cell.row,1).end('up').row + 1
mdilr = md_coords.cells(md_coords.cells.last_cell.row,3).end('up').row + 1
# print(f"mdlr is {mdlr}")
# print(f"dlr is {dlr}")
# print(f"mdilr is {mdilr}")
while mdilr < dlr:
mdilr = md_coords.cells(md_coords.cells.last_cell.row,3).end('up').row + 1
#Identify X Coord from Workbook.
x_coord = md_coords.range(f"A{mdilr}").value
#Identify Y Coord from Workbook.
y_coord = md_coords.range(f"B{mdilr}").value
#Click on Location Finder.
pyauto.click(x=1097, y=827)
time.sleep(.5)
#Identify X Coord from Workbook.
#x_coord = md_coords.range(f"A{mdilr}").value
#Click on X Coord Box.
pyauto.click(x=1038, y=784)
time.sleep(.3)
pyauto.typewrite(x_coord)
#Identify Y Coord from Workbook.
#y_coord = md_coords.range(f"B{mdilr}").value
#Double-Click on Y Coord Box.
pyauto.click(x=1189, y=786, clicks=2, interval=.3)
time.sleep(.3)
pyauto.typewrite(y_coord)
#Double-Click on Find Button.
pyauto.click(x=1263, y=786, clicks=2, interval=.3)
# #Click Center of Target Tile.
pyauto.click(x=1100, y=534, clicks=2, interval=.4)
#Take and Save Screenshot
im = pyauto.screenshot(region=(941,210, 324, 400))
im.save(x_coord + '_' + y_coord + '.png')
#Update workbook to show screenshot saved.
md_coords.range(f"C{mdilr}").value = "Yes"
#Resets the last row + 1
mdilr = md_coords.cells(md_coords.cells.last_cell.row,3).end('up').row + 1
错误:
Traceback (most recent call last):
File "c:\Users\reber\Gaming\Rise of Castles\Member_Details\tuple.py", line 37, in <module>
pyauto.typewrite(x_coord)
File "c:\Users\reber\Gaming\Rise of Castles\Member_Details\GetMemberDetails_venv\Lib\site-packages\pyautogui\__init__.py", line 594, in wrapper
returnVal = wrappedFunction(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\reber\Gaming\Rise of Castles\Member_Details\GetMemberDetails_venv\Lib\site-packages\pyautogui\__init__.py", line 1682, in typewrite
for c in message:
^^^^^^^ TypeError: 'float' object is not iterable
正如对该问题的评论所指出的那样,您遇到的异常似乎与您的 Excel 文件的内容或您在问题简介中谈到的任何其他详细信息没有任何关系。
相反,这是您传递给
pyauto.typewrite
的值的数据类型的问题。该函数需要一个字符串(或者可能是一个可迭代的字符串),并且您向它传递一个 float
。您应该能够解决这个问题,只需添加对 str
的调用,给您 pyauto.typewrite(str(x_coord))
(如评论中 Scott Hunter 所建议)。