使用 Python 访问打开的 Excel 工作簿

Seu*_*LEE 0 python excel python-module win32com openpyxl

如何使用win32com模块找到打开的 Excel 工作簿?我只想读取尚未保存的 Excel 工作簿中的单元格。或者有什么文件可以参考吗?

Boa*_*les 6

你可以这样做

>>> from win32com.client import Dispatch
>>> xlApp = Dispatch("Excel.Application")
Run Code Online (Sandbox Code Playgroud)

此时 COM 将连接到正在运行的 Excel 副本(如果有),或者如果没有,则启动一个新副本。您显然想连接到正在运行的版本。为确保您的 Python 代码与 Excel 的同一个实例对话,请隐藏并取消隐藏几次:

>>> xlApp.Visible=1
>>> xlApp.Visible=0
>>> xlApp.Visible=1
Run Code Online (Sandbox Code Playgroud)

您的代码与之对话的 Excel 实例应该对此做出反应。然后检查它是否是您想要的工作簿。如果这是一个未保存的工作簿,那么它的名称通常类似于Book1.

>>> xlApp.ActiveWorkbook.Name
'Book1'
Run Code Online (Sandbox Code Playgroud)

如果这给您一个错误,因为xlApp.ActiveWorkbookNone那么您的代码正在与没有打开工作簿的 Excel 的不同实例对话。

然后,要从工作表中获取值,您当然必须知道您想要什么单元格:

>>> xlApp.ActiveWorkbook.ActiveSheet.Range("I3").Value
'C.2.16'
Run Code Online (Sandbox Code Playgroud)

您的范围和价值当然会有所不同。

这在 Hammond & Robinson: Python programming on Win32 , O'Reilly, 2000, ISBN 1-56592-621-8 的第 9 章中有非常清楚的描述。