问题描述
目标:
我正在尝试使用 openpyxl
从 Excel 单元格读取产品编号(例如 A11841-2 - -),并使用 pyautogui.write
将其写入数据库窗口中的字段。我的原始代码 (https://pastebin.com/6EUFQ09s):
import openpyxl
wb = openpyxl.load_workbook('repack_locns.xlsx')
sheet = wb['r_locn']
sku = sheet.cell(row=2,column=1).value
#5 Enter product code into PKMS (cursor should already be where it's supposed to be)
#and press Enter
import pyautogui
pyautogui.write(sku)
未将信息写入正确的字段(产品代码 A11841-2 中第一个连字符后的数字 2 - - 应在后缀字段中,而不是在样式字段中,如1 中所示) . [注意:我正在使用 Mu 1.1.0.alpha.2 来编写我的代码并从中运行它]
我做了什么:
我首先在 Excel 中查找产品编号中的连字符并将其替换为 \t
,从而生成如下产品代码:A11841\t2 \t \t
。当我简单地从 Excel 单元格中复制产品编号并将其粘贴到代码中时(修改位于 https://pastebin.com/sX1SdV8Q 的第 34 行):
import openpyxl
wb = openpyxl.load_workbook('repack_locns.xlsx')
sheet = wb['r_locn']
sku = 'A11841\t2 \t \t'
#5 Enter product code into PKMS (cursor should already be where it's supposed to be)
#and press Enter
import pyautogui
pyautogui.write(sku)
并在每一端加上一个单引号,它起作用了!它在按下 Tab 键时读取 \t
,并将产品代码输入正确的字段 (2)。然后,我使用我的原始代码从具有此格式更改的原始 Excel 文件的副本中读取数据。
问题:
当产品编号由 pyautogui
写入时,它不会将 \t
识别为 Tab 按下。相反,它只是将它们写为字符 (3)。
我尝试过的:
我使用 pyperclip
尝试在我的代码中包含复制/粘贴步骤,这样我最终可以使其可重复。我使用 openpyxl
从 Excel 单元格中提取,然后在每一端连接单引号。然而,它没有用;同样的问题出现在 pyautogui.write
函数无法将 \t
识别为 Tab 按下而只是将它们写为字符。
我使用了 type()
,pyautogui.write
所写的内容和我直接从 Excel 复制/粘贴的内容(然后用单引号括起来)都归类为字符串。不知道为什么 \t
在每种情况下都没有得到相同的对待。
解决方法
经验教训:当您遇到问题时,在您的程序中逐行检查输出
这很简单,但我是一个新程序员,所以我没有尽可能快地掌握它,哈哈
sheet.cell(row=2,column=1).value
结果是那段代码吐出的是 'A11841\\t2 \\t \\t'
而不是 'A11841\t2 \t \t'
。完全有道理,因为它正在从 Excel 单元格中读取文本 A11841\t2 \t \t
。我只是简单地使用了 join()
和 split()
,然后使用了 pyautogui.write()
,它奏效了!:
sku = sheet.cell(row=2,column=1).value
sku_='\t'.join(sku.split('\\t'))
pyautogui.write(sku_)