大家好......我正在使用win32api。用途是在计算机屏幕上移动鼠标,突出显示区域,复制内容,然后将内容发送到MS Excel电子表格。
以下是代码:
import xlwt
import win32api
import win32con
import win32clipboard
import time
x,y = win32api.GetCursorPos()
win32api.SetCursorPos((36, 311))
# choose the contents, highlight area from 36,311 to 66,400
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
time.sleep(0.05)
win32api.SetCursorPos((66, 400))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
# copy the contents
time.sleep(0.05)
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard
aaa = win32clipboard.SetClipboardData
win32clipboard.CloseClipboard()
# write the contents into speadsheet
book = xlwt.Workbook(encoding='utf-8', style_compression = 0)
sheet = book.add_sheet('SheetOK', cell_overwrite_ok = True)
sheet.write (1, 1, aaa)
book.save("C:\\paste_write.xls")
它无法正常工作并返回错误“Exception:Unexpected data type”。看起来复制和粘贴部分无效。
你能帮帮我吗?感谢。错误:
Traceback (most recent call last):
File "C:\Python27\simulate mouse click.py", line 27, in <module>
sheet.write (0, 0, aaa)
File "C:\Python27\lib\xlwt\Worksheet.py", line 1030, in write
self.row(r).write(c, label, style)
File "C:\Python27\lib\xlwt\Row.py", line 259, in write
raise Exception("Unexpected data type %r" % type(label))
Exception: Unexpected data type <type 'builtin_function_or_method'>
答案 0 :(得分:1)
错误消息显示失败的代码行:
Traceback (most recent call last):
File "C:\Python27\simulate mouse click.py", line 27, in <module>
sheet.write (0, 0, aaa)
^^^ THIS YOUR FUNCTION CALL THAT FAILED
File "C:\Python27\lib\xlwt\Worksheet.py", line 1030, in write
self.row(r).write(c, label, style)
File "C:\Python27\lib\xlwt\Row.py", line 259, in write
raise Exception("Unexpected data type %r" % type(label))
^^^ THIS IS WHERE IT ACTUALLY FAILED IN THE LIBRARY
Exception: Unexpected data type <type 'builtin_function_or_method'>
错误消息告诉您某些内容收到“意外数据类型”,其类型为“builtin_function_or_method”。因此,对sheet.write
的调用发生了,但它反对您传入的数据。
如果你回顾一下aaa
的价值:
aaa = win32clipboard.SetClipboardData
啊 - 你在这里要做的就是评估这个功能,但你已经不再使用括号(
&amp; )
。所以发生的事情是aaa
已经分配了函数本身。要调用此函数,请查看此答案以获取详细信息Troubles with clipboard in Python
你也离开了上面一行上的函数的括号。
win32clipboard.EmptyClipboard
请尝试以下方法:
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText("test data")
...
aaa = win32clipboard.GetClipboardText()
这里似乎存在第二个问题,您必须将数据传递给SetClipbardData
- 它不会在当前所选文本上触发复制操作。您可能需要使用不同的API。