我正在尝试安装 PyXLL,并尝试采取初步步骤,使用 win32 COM API 从 python 调用 excel。
从 Anaconda 提示符中,使用 ipython,我输入
from win32com.client import Dispatch
xl = Dispatch('Excel Application')
但是我得到:
com_error: (-2147221005, 'Invalid class string', None, None)
作为参考,我尝试按照该视频前两分钟的说明进行操作:https://youtu.be/ubqsRcCUcB4。我使用的是 Windows 11。
我已修复“Microsoft 365 - en-us”并卸载并重新安装“Microsoft 365 (Office)”,但这没有产生任何影响。
我尝试按照此线程使用 EnsureDispatch,但这产生了相同的错误
Python 的版本会对“xl”返回不同的响应。
我认为在视频教程中他声明他正在使用 Python 3.9,这会将
xl
对象显示为
<win32com.gen_py.Microsoft Excel 16.0 Object Library._Application instance at ...
而如果您使用的是 3.10 或 3.11 的更高版本,它将将该对象显示为
<COMObject Excel.Application>
然后他一开始并没有说清楚,但是你在视频背景中看到的Excel对于接下来的演示很重要。
因此,首先运行 Excel 并打开一个新的空白 Excel 工作簿和工作表,然后在后台运行。
然后运行 ipython 并按照教程所示的命令进行操作;
In [1]: from win32com.client import Dispatch
In [2]: xl = Dispatch("Excel.Application")
In [3]: xl
Out[3]: <COMObject Excel.Application>
In [4]: xl.Range('A1').value = "hello"
您应该在 Excel 工作表的单元格 A1 中看到单词“hello”