2017-07-17 3 views
0

J'ai essayé d'ajouter des boutons poussoirs à des feuilles excel créées dynamiquement en utilisant win32com depuis python. Le principal problème auquel je suis confronté est que je suis incapable d'obtenir le Worksheet COMObject sur lequel je peux appliquer les méthodes Worksheet. J'ai le code suivant à ce jour:Obtenir la feuille de calcul COMObject en Python

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) 

Cela donne à la suivante une sortie et une erreur:

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

Je me attendais à ce que « ws » d'être un COMObject de feuille sur laquelle je peux directement ajoutez un bouton de commande en utilisant le code ci-dessus. Veuillez m'expliquer ce que je fais de mal ici ainsi qu'une méthode pour obtenir l'objet Worksheet sur lequel l'extrait de code ci-dessus fonctionnerait. Merci.

Répondre

0

ws.Buttons est une méthode qui renvoie un objet COMObject lorsqu'il est appelé. Vous devez donc ajouter des parenthèses directement après.

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)