Tim*_*ack -1 python excel pycharm python-3.x
我正在尝试从已经打开的工作簿中提取数据。
我找到了xlrd 库,但似乎只能将它用于通过 Python 打开的工作簿。我将在我的项目中使用的工作簿已经打开,因此此方法无法使用。
我发现的第二个库OpenPyxl只为我返回错误,即使工作簿是打开的:
from openpyxl import load_workbook
wb = load_workbook(filename = 'Components V2.4.3.xlsm')
Run Code Online (Sandbox Code Playgroud)
返回:
FileNotFoundError: [Errno 2] 没有这样的文件或目录:'Components V2.4.3.xlsm'
最后,我使用了无法从中获取单元格值的win32com.client's Dispatch,因此我正在寻找替代方法。
我做错了什么openpyxl,或者我可以使用另一种方法吗?
小智 6
打开当前在 Excel 中打开的工作簿 test.xlsx,并读取第一个工作表的单元格 A1 中的值:
from win32com.client import GetObject
xl = GetObject(None, "Excel.Application")
wb = xl.Workbooks("test.xlsx")
ws = wb.Sheets(1)
ws.Cells(1, 1).Value
Run Code Online (Sandbox Code Playgroud)
将范围读取为元组元组:
ws.Range("A1:D4").Value
Run Code Online (Sandbox Code Playgroud)
写回一些值:
ws.Range("A1:D4").Value = [[16, 3, 2, 13], [5, 10, 11, 8], [9, 6, 7, 12], [4, 15, 14, 1]]
Run Code Online (Sandbox Code Playgroud)
对评论的回答:COM(组件对象模型),有时也称为“自动化”,允许 Windows 应用程序提供一个“COM 服务器”,它可以访问它的一些 API,从“COM 客户端”访问. Excel 有这样一个服务器(VBA 有一个客户端:您可以使用VBA 中的CreateObject和GetObject)。
其他应用程序通过 COM 提供类似的服务:例如MATLAB、SAS、Stata和 Microsoft Office 的所有应用程序。
Python 有一个带有pywin32的客户端。您也可以使用 Pywin32 开发服务器,例如参见:Portable Python com server using pywin32
请注意,就 Excel 而言,正如您所注意到的,您可以访问大部分对象层次结构,并非常精确地控制 Excel 的行为。基本上,如果您可以在 VBA 中执行此操作,则可以从任何 COM 客户端执行此操作。
关于范围的最后一行,我不确定我是否理解您想要什么。是这样的:Excel VBA Find last row in range?
还有几点:
如果 Excel 尚未打开,您仍然可以打开与 Excel 的连接。在 VBA 中,执行此操作的函数是 CreateObject 而不是 GetObject,但在 Python 中它是 Dispatch:
from win32com.client import Dispatch
xl = Dispatch("Excel.Application")
xl.WorksheetFunction.Gamma(0.5)
Run Code Online (Sandbox Code Playgroud)
在 VBA 中,您经常会使用 Excel“常量”,例如 xlUp。它们也可以在 Python 中使用(在开始与 Excel 连接后,使用 GetObject 或 Dispatch):
from win32com.client import constants as const
const.xlUp
Run Code Online (Sandbox Code Playgroud)
要连接到计算机上安装的 COM 服务器,您需要获取对象的名称。这里有几个案例:
对于 Microsoft Office:
在 VBScript 中经常使用:
专业软件:
最后一句话:作为解释在这里,你可以找到Pywin32的文档,无论是在它的安装(目录[Pythonpath]\Lib\site-packages\PyWin32.chm),或在此网站:http://timgolden.me.uk/pywin32-docs/contents.html
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |