我一直在尝试使用python内部的win32com为动态创建的excel表添加按钮。我面临的主要问题是我无法获得可以应用Worksheet方法的Worksheet COMObject。到目前为止,我有以下代码:
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 :(得分: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)