如何使用 Pyrtd/pythoncom 解决“pywintypes.com_error”?

2024-01-17

我正在尝试使用pyrtd https://code.google.com/p/pyrtd/Python模块用于获取可以通过RTD在Excel中获取的信息。

但是,当我尝试运行示例 python 脚本 http://code.google.com/p/pyrtd/source/browse/examples/rtdtime.py,我收到以下错误:

pywintypes.com_error:( -2147221164, 'Class not registered', None, None)

我尝试过其他几个 RTD 功能,有时(当我使用Dllname.function_name作为参数RTDClient()) I get:

pywintypes.com_error:( -2147221005, 'Invalid class string', None, None)

所有这些 RTD 函数都在 Excel 2010 中运行良好。

我还没有找到适用于 Python 的解决方案,但我已经了解了一些适用于 C# 的技巧:

  • 适用于 Excel 实时数据 (RTD) 服务器的 C# 客户端 https://andrewsheppard.wordpress.com/2010/10/23/a-real-time-data-rtd-server-written-in-c/
  • C# 中的 Excel RTD 客户端 http://awkwardcoder.com/2014/01/24/excel-rtd-client-in-c/
  • http://bbs.csdn.net/topics/320252117 http://bbs.csdn.net/topics/320252117
  • Excel RTD 服务器:C# 中的多个主题 http://blog.lab49.com/archives/2684

基本思想是:

  1. 从寄存器表中获取 rtd 服务器的类类型ProgID(例如,RTDTime.RTD, 你可以在...里找到它们HKEY_LOCAL_MACHINE\SOFTWARE\Classes\RTDTime.RTD,如果您已经使用过regsvr32注册 dll)。

    在 C# 中,该函数是Type.GetTypeFromProgID(). 我相信Python模块中有相同的功能win32com.

  2. 将服务器类强制转换为IRtdServer (Microsoft.Office.Interop.Excel.IRtdServer).

  3. 然后就可以使用IRtdServer.ConnectData(topicID, topics, newData)获取数据:

    • topicID似乎是任意随机的int;
    • topics是你在Excel中使用的参数,它是一个数组;
    • newData is a bool,将其设置为True如果您请求新数据而不是缓存数据。
  4. 但是,我相信如果想要自动更新数据,就需要一个回调事件。

根据链接的博客文章 https://andrewsheppard.wordpress.com/2010/10/23/a-real-time-data-rtd-server-written-in-c/,事件类也可以通过progID. 但我在reg表中没有找到任何.

在 C# 中,我认为也许可以创建一个IRTDUpdateEvent。但我不知道如何用Python处理它。

有人可以帮助我解决这些错误吗?


解决了。安装和使用 32 位 ActivePython

http://python.6.x6.nabble.com/Problem-using-win32com-client-Dispatch-on-Win7-64bit-td1957248.html http://python.6.x6.nabble.com/Problem-using-win32com-client-Dispatch-on-Win7-64bit-td1957248.html

这可能是因为我正在使用 64 位 python 并尝试获取 32 位 com 对象

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Pyrtd/pythoncom 解决“pywintypes.com_error”? 的相关文章

  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • 如何在序列化器创建方法中获取 URL Id?

    我有以下网址 url r member P
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default

随机推荐