代码之家  ›  专栏  ›  技术社区  ›  Khalid Malik

在Python中获取工作表COMObject

  •  0
  • Khalid Malik  · 技术社区  · 8 年前

    我一直在尝试从python内部使用win32com向动态创建的excel工作表添加按钮。我面临的主要问题是无法获得可以应用工作表方法的工作表对象。到目前为止,我已获得以下代码:

    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,我可以使用上面的代码直接在其上添加一个按钮。请向我解释我在这里做错了什么,以及获取工作表对象的方法,上面的代码片段将在该对象上工作。谢谢

    1 回复  |  直到 8 年前
        1
  •  0
  •   Xukrao    8 年前

    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)