python 3上的IAC协议接口错误

时间:2017-09-01 16:30:15

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

我想通过python使用excell表格(.xls可能每个.ods转换),同时保留所有表格的原始内容。与 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       Traceback(最近一次调用最后一次):         文件"",第1行,in         文件" /usr/lib/python3.4/site-packages/iac/app/libreoffice/calc.py" ;,第11行,在           来自uno import getComponentContext       ImportError:无法导入名称' getComponentContext'

    
  

根据我迄今为止在本论坛上所学到的知识,它可能与两个模块之间的方法名称重复性有关。这是我被困的地方。如何了解哪个其他模块具有此方法的名称以及如何修复它? iac-protocol和unotools都是通过pip3下载的模块。我没有在任何脚本中创建这种名称的方法。

提前感谢您的任何建议!

关于Scientific Linux版本7.3的Python3.4(氮气)LibreOffice 5.0.6.2 00(版本:2)

1 个答案:

答案 0 :(得分:0)

缩小问题的一些问题:

  • 您是否首先在套接字上启动libreoffice?

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

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

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

The 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而不是包装库?这样可以避免依赖可能导致问题的一些额外库。对于直接PyUNO也有better documentation