gpt4 book ai didi

python - Python 中的 Excel RTD 服务器不更新数据

转载 作者:太空狗 更新时间:2023-10-29 20:59:27 25 4
gpt4 key购买 nike

我有 excelRTDserver.py通过将 EXCEL_TLB_MINOR 值更改为 7,在 Excel 2010(32 位)中启动并运行。我可以在加载项列表中看到服务器,如果我在单元格中输入 =RTD("Python.RTD.TimeServer","","seconds","5"),我会得到当前时间。但它永远不会更新。如果我将“5”更改为另一个数字,我会收到更新,但在初始更改后它再也不会更改。

如何让它更新?我发现其他人也有类似的问题here , 但无解。

更新:我有一点更进一步 - 在将 PyIDispatch 回调对象转换为 IRTDUpdateEvent 回调对象时,ServerStart 中引发了一个异常。使用this method要捕获错误消息,我会收到“当该文件已存在时无法创建文件”。如果我听从建议 here并使用 win32com.client.CastTo(CallbackObject,'IRTDUpdateEvent') 我得到“此 COM 对象无法自动执行 makepy 过程 - 请为此对象手动运行 makepy”,但我已经为Microsoft Excel 12.0 对象库 (1.6)。

如有任何帮助,我们将不胜感激。

最佳答案

为了解决这个问题,我在 github 上为 pythoncom excel 类型创建了一个新项目:

https://github.com/pyxll/exceltypes

这包括 excelRTDServer.py 的略微修改版本,它使用新类型 PyIRTDUpdateEvent 而不是 win32com makepy 包装器,因此它现在可以在 Excel 2010 中使用(在 exceltypes/demos/excelRTDServer.py 中查找注释 'EXCELTYPES_MODIFICATION')。

要构建项目,您需要安装 visual studio(它不会使用 gcc 构建),您可以使用项目中包含的 setup.py 构建它,如下所示:

python setup.py install

如果您需要强制它使用 visual studio 而不是 gcc,请使用 "--compiler=msvc" 选项,例如,如果您使用的是 anaconda。如果您想使用 Visual Studio 2012 而不是默认的 2010,请将以下行添加到 setup.py:

from distutils import msvc9compiler
msvc9compiler.VERSION = 11

关于python - Python 中的 Excel RTD 服务器不更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9985512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com