2017-07-17 60 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)