在 Excel 中访问数据 - 来自 python 的路透社
Posted
技术标签:
【中文标题】在 Excel 中访问数据 - 来自 python 的路透社【英文标题】:Access data in Excel - Reuter from python 【发布时间】:2013-04-02 12:29:15 【问题描述】:我正在使用 Excel 中集成的路透社来检索市场数据。对于任务自动化,我目前使用 VBA,但现在我想切换到 python。 pyxll
这个包没有多大用处,因为原理和VBA一样(我需要在Excel里面点击RUN按钮...)
所以我正在考虑使用 win32com 从外部通过 COM 对象访问 Excel。但是,当我这样做时:
from win32com.client import Dispatch
xlApp = Dispatch("Excel.Application")
此代码打开一个新的 Excel 实例,其中没有 Reuter 插件(因此我无法使用 Reuter 函数检索数据)。我不知道如何从 python 访问 Excel-with-Reuter 实例?
我查看了Com Explorer
以探索该服务,除了 Excel 之外我没有看到任何其他服务
【问题讨论】:
你能控制你打开的excel实例吗?如果是这样,那么我认为解决方案可能就像告诉 excel 打开whatever.xll 以加载路透社的插件一样简单。 问题是没有.xll文件,这是Dotnet写的插件,就是不知道应用是怎么启动的 如何启动应用程序? 这也是我的问题。桌面上有一个快捷方式,但我看不到这个二进制文件里面的可执行文件在哪里 Reuters .NET 应用程序是否有 COM 接口?你说你目前使用 VBA,那么 VBA 代码是什么样的,可以让你访问 Reuters 应用程序? 【参考方案1】:试试这个 -
import os
from win32com.client import GetObject
os.startfile(r'C:\path\to\ReutersExcel.exe')
xlApp = GetObject(None, 'Excel.Application')
【讨论】:
非常感谢,您为我(和我的公司)节省了很多时间?汤森路透的家伙一定很伤心;-) @pyrospade 你能在你的答案中添加更多细节吗? GetObject 不是很常见,我很想听听您对如何/何时使用它的看法。Dispatch()
用于创建一个新的 COM 实例; GetObject()
用于获取现有的 COM 实例。这里的技巧是通过操作系统调用打开应用程序而不是检索实例。
那么他还在访问 Excel.Application 对象并通过那里访问附加组件?这是否假设他可以启动 Excel,启动应用程序并调用:xl = win32com.client.Dispatch("Excel.Application")
; xlWbk = xl.ActiveWorkbook
并做了同样的事情?
正确。他只需要使用 Excel COM API。【参考方案2】:
如果您使用 Excel 访问 Thomson Reuters Dataworks Enterprise(以前的 Datastream),请查看 pydatastream (https://github.com/vfilimonov/pydatastream) - 它允许您以 pandas.DataFrame 格式将数据直接获取到 python。
【讨论】:
【参考方案3】:如果您使用 Excel VBA,则很有可能出现错误结果(您也很难编写更多代码来处理可能导致问题的状态)。
根据我的经验,我们应该直接使用提要中的数据并对其进行操作。它易于维护且可靠(我肯定在 python 中这样做)。
我正在使用 PyRFA 来使用来自我的 P2PS 的数据并对其进行操作(这个 API 非常棒,因为它目前是免费的!它提供了消费者和提供者的能力)。以下是此 API 的更多详细信息:
http://www.devcartel.com/pyrfa
您需要与他们的支持团队联系以获取更多详细信息,然后开始繁荣编码!
干杯, 迈克尔
【讨论】:
感谢您的建议,但在我公司,我们只有 Excel 界面用于检索数据,对于其他服务,我们可能会支付更多费用...【参考方案4】:您可以使用以下代码启动加载项: 在选择自动登录之前制作 sur。
Import win32com.client
xl = win32com.client.DispatchEx("Excel.Application")
【讨论】:
以上是关于在 Excel 中访问数据 - 来自 python 的路透社的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 和 Txt 文件并将数据放入 excel 或访问数据库