【问题标题】:IAC-protocol interface error on python 3python 3上的IAC协议接口错误
【发布时间】:2018-02-10 18:28:32
【问题描述】:

我想通过 python 使用 Excel 工作表(可能是每个 .ods 转换的 .xls),同时保留工作表的所有原始内容。与 xlutils (http://www.python-excel.org/) 不同,iac-protocol (http://pythonhosted.org/iac-protocol/index.html) 在我看来更适合/优雅的工具来维护工作表的样式、公式、保管箱等。启动 iac 的服务器或解释器 (iacs/iaci) 的步骤之一是初始化包含此命令的接口:

将 iac.app.libreoffice.calc 导入为 localc

虽然 import iac.app.libreoffice 工作正常

移动到计算级别 导入 iac.app.libreoffice.calc 抛出以下错误

导入 iac.app.libreoffice.calc 回溯(最近一次通话最后): 文件“”,第 1 行,在 文件“/usr/lib/python3.4/site-packages/iac/app/libreoffice/calc.py”,第 11 行,在 从 uno 导入 getComponentContext ImportError:无法导入名称“getComponentContext”

从我目前在这个论坛上了解到的情况来看,这可能与两个模块之间的方法名称重复有关。这就是我卡住的地方。我如何知道哪个其他模块具有这样的方法名称以及如何修复它? iac-protocol 和 unotools 都是通过 pip3 下载的模块。我没有在任何脚本中创建此类名称的方法。

提前感谢您的任何建议!

Scientific Linux 版本 7.3 (Nitrogen) LibreOffice 5.0.6.2 00(Build:2) 上的 Python3.4

【问题讨论】:

    标签: python-3.x libreoffice libreoffice-calc


    【解决方案1】:

    一些缩小问题范围的问题:

    • 您是否首先启动 libreoffice 侦听套接字?

    • 您在import iac.app.libreoffice.calc 之前是否导入了其他内容?

    • 在终端中启动python并输入from uno import getComponentContext会发生什么?

    我在 Linux Mint 上安装了 iac-protocol 并且能够import iac.app.libreoffice.calc 然后使用它。安装过程很复杂,所以如果您的软件包的安装方式存在问题,或者可能无法在基于 RHEL 的系统上运行,我不会感到惊讶。一方面,它需要我安装 gnumeric。

    对我有用的 Calc“Hello World”代码如下。

    libreoffice "--accept=socket,host=localhost,port=18100;urp;StarOffice.ServiceManager" --norestore --nofirststartwizard --nologo --calc &
    python3
    >>> import iac.app.libreoffice.calc as localc
    >>> doc = localc.Interface.current_document()
    >>> sheet = doc.getSheets().getByIndex(0)
    >>> cell = sheet.getCellByPosition(0,0)
    >>> cell.setString("Hello, World!")
    

    再想一想:您是否考虑过使用从 import uno 开始的直接 PyUNO 而不是包装库?这将避免依赖一些可能导致问题的额外库。还有better documentation 用于直接 PyUNO。

    【讨论】:

    • 我确实首先启动了 UNO 桥。弹出一个计算表作为响应。之前的“import iac.app.libreoffice.calc”命令我只导入了 uno 和 iac(以及 iac.app 等),没有问题。我很幸运找到了 libreoffice-pyuno 库,但仍然缺少 getComponentContext 方法。我找到了 goffice 库,但到目前为止我运气不好,无法为 RHEL 7 找到合适的 gnumeric 存储库。应该是 EPEL(或 EPEL-test)的一部分,但我找不到它。
    猜你喜欢
    • 2021-07-17
    • 2011-08-30
    • 2012-07-31
    • 2018-05-18
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多