我想通过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)
答案 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。