如何通过Python win32com获取Excel所有可用函数及Excel/Word COM对象的方法与属性列表
我之前也被win32com的动态特性坑过,明明调用对象的方法没问题,但看源码或用dir()就是找不到定义——其实这是因为COM对象是动态分发的,pywin32不会提前把所有成员硬编码到源码里。不过有几个非常靠谱的方法能解决你的两个需求:
一、获取Excel所有可用内置函数
方法1:通过Excel API按类别枚举函数
Excel本身提供了按分类获取函数的接口,用win32com调用就能拿到官方认可的完整内置函数列表:
import win32com.client as win32 excel = win32.Dispatch("Excel.Application") # 获取所有函数类别(比如财务、逻辑、文本等) function_categories = excel.Application.FunctionCategories for category in function_categories: print(f"📌 函数类别:{category}") # 获取当前类别下的所有函数名 category_functions = excel.Application.GetFunctionNames(category) for func_name in category_functions: print(f" - {func_name}")
这个方法返回的结果最精准,完全对应Excel官方的函数分类。
方法2:通过WorksheetFunction对象快速查看
所有Excel工作表函数都挂载在WorksheetFunction对象下,你可以用dir()过滤掉私有属性快速获取:
ws_funcs = dir(excel.WorksheetFunction) # 过滤掉以_开头的内部属性 excel_functions = [func for func in ws_funcs if not func.startswith('_')] print(excel_functions)
不过这个方法会包含一些内部辅助方法,适合快速扫一眼可用函数。
二、获取Excel/Word COM对象的方法与属性列表
这部分是win32com的常见痛点,以下方法按靠谱程度排序:
方法1:生成静态类型包装器(gen_py)
pywin32的gencache.EnsureDispatch会自动为COM对象生成对应的Python静态包装类,生成后不仅能用dir()看到完整成员列表,还能直接查看生成的源码(里面有详细的参数和注释):
import win32com.client as win32 # 用EnsureDispatch代替Dispatch,自动生成静态包装 excel = win32.gencache.EnsureDispatch("Excel.Application") workbook = excel.Workbooks.Open("your_file.xlsx") # 现在dir(workbook)会显示所有方法和属性 print(dir(workbook))
生成的包装类文件存在Python安装目录下的Lib\site-packages\win32com\gen_py文件夹里,打开这些.py文件就能看到每个对象的方法、属性定义,甚至参数类型说明——相当于拥有了一份本地化的COM对象文档。
方法2:用Office自带的VBA对象浏览器
win32com调用的COM对象和VBA里的对象模型完全一致,直接用Office自带的工具最直观:
- 打开Excel/Word,按
Alt+F11打开VBA编辑器 - 按
F2打开对象浏览器 - 在左上角的库下拉菜单里选择
Excel(或Word),就能浏览所有对象(比如Application、Workbook、Document等)的所有方法、属性,甚至能看到参数和返回值说明
这个方法不需要写代码,是官方最权威的参考。
方法3:查看动态对象的内部映射
对于已经用Dispatch创建的动态对象,win32com内部维护了属性和方法的映射表,你可以直接访问这些内部属性快速查看:
# 获取对象可读取的属性列表 print(excel._prop_map_get_.keys()) # 获取对象可写入的属性列表 print(excel._prop_map_put_.keys()) # 获取对象的方法列表 print(excel._method_map_.keys())
这个方法适合临时排查问题,但成员覆盖不如前两种方法全面。
方法4:用Windows自带的OLE/COM Object Viewer
Windows系统自带oleview.exe工具(直接在运行框输入打开即可),它能查看所有注册的COM组件类型库。找到Microsoft Excel Object Library或Microsoft Word Object Library,展开后就能看到所有接口、方法、属性的详细定义,非常专业。
内容的提问来源于stack exchange,提问作者zero




