我想通过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工作正常
移动到calc级别导入iac.app.libreoffice.calc引发以下错误
导入"/usr/lib/python3.4/site-packages/iac/app/libreoffice/calc.py",跟踪(最近一次调用):文件"",第1行,文件iac.app.libreoffice.calc第11行,从uno导入getComponentContext ImportError:无法导入名称'getComponentContext'
根据我到目前为止在这个论坛上学到的东西,它可能与两个模块之间的方法名称的双重性有关。这就是我被困的地方。我如何了解其他哪个模块有这样的方法名称,以及如何修复它?iac协议和unotools都是通过pip3下载的模块。我没有在任何脚本中创建这种名称的方法。
提前感谢您的任何建议!
Python3.4 on Scientific Linux7.3版(氮) LibreOffice 5.0.6.2 00(构建:2)
发布于 2017-09-01 19:40:47
为了缩小问题的范围,一些问题:
import iac.app.libreoffice.calc
之前,您还导入了其他内容吗?from uno import getComponentContext
时会发生什么我在Linux上安装了iac-协议,并且能够import iac.app.libreoffice.calc
,然后使用它。安装过程很复杂,所以如果您的包是如何安装的,或者它可能无法在基于RHEL的系统上工作,我不会感到惊讶。首先,它要求我安装gnumeric。
为我工作的Calc "Hello“代码如下所示。
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!")
还有一个想法:您考虑过从PyUNO开始使用直接的import uno
而不是包装器库吗?这将避免对可能导致问题的一些额外库的依赖。还有更好的文件 (直指PyUNO )。
https://stackoverflow.com/questions/46004491
复制相似问题