在 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 或访问数据库

Python:将excel文件添加到访问数据库

比较季度数据:Python(Pandas) 中的迭代以比较来自作为数据框导入的四个不同 excel 文件的多列

用Python在Excel中查找并替换数据

将链接表用于 Excel 文档时的 ms 访问数据类型问题

通过 Python 在 Excel 中创建切片器对象