2017-07-17 61 views
0

我一直在尝试添加按钮来动态创建使用win32com从python里面的Excel工作表。我面临的主要问题是,我无法获得我可以应用工作表方法的工作表COMObject。我有下面的代码至今:在Python中获取工作表COM对象

from win32com.client import DispatchEx, Dispatch 
excel = Dispatch('Excel.Application') 
wb = excel.Workbooks.Open('some/path/') 
ws = wb.Worksheets.Add() 
print(ws) 
ws.Buttons.Add(786, 323.25, 109.5, 29.25) 

这给了一个输出和一个错误如下:

<COMObject Add> 
AttributeError: 'function' object has no attribute 'Add' 

我期待的是“WS”是一个工作表COMObject上,我可以直接使用上面的代码添加一个按钮。请向我解释我在这里做错了什么,以及获取上面的代码片段可以工作的Worksheet对象的方法。谢谢。

回答

0

ws.Buttons是一种在调用时返回COMObject的方法。所以你需要在它之后直接添加括号。

from win32com.client import DispatchEx, Dispatch 
excel = Dispatch('Excel.Application') 
wb = excel.Workbooks.Open('some/path/') 
ws = wb.Worksheets.Add() 

# Show the difference between `ws.Buttons` and `ws.Buttons()` 
print(type(ws.Buttons)) 
print(type(ws.Buttons())) 

# Add button to worksheet 
ws.Buttons().Add(786, 323.25, 109.5, 29.25)