尝试从 win32com.client 导入调度时出错

问题描述 投票:0回答:1

我正在尝试安装 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。

  • 我已经验证我使用的是 64 位 Excel 和 64 位 python。 Confirmation of Python 64-bit

  • 我已修复“Microsoft 365 - en-us”并卸载并重新安装“Microsoft 365 (Office)”,但这没有产生任何影响。 Uninstalled/Repaired Microsoft 365

  • 我尝试按照此线程使用 EnsureDispatch,但这产生了相同的错误

python excel win32com
1个回答
0
投票

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”

© www.soinside.com 2019 - 2024. All rights reserved.