从LO Calc

时间:2018-06-30 01:28:44

标签: python libreoffice basic calc

我是Python和Basic的新手。我正在尝试从Libre Office(LO)Calc中的Google表格复制ImportHtml函数。简而言之,我想在Calc中创建一个GetHtmTable(Url,Table Index)Basic函数,该函数将调用Python脚本来完成繁重的工作。

因此基于Villeroy的出色示例https://forum.openoffice.org/en/forum/viewtopic.php?f=45&t=73145&p=329658,我在LO 5.1.6.2中进行了实现。基本的 SOUNDEX 函数,该函数调用Python脚本sheetFunctions.py来熟悉该过程。我的环境是Linux Mint 18,使用Python3,导入了所有类型的库,例如Uno,PIP等。我使用PycharmProjects作为Python编辑器。

我在LO Calc菜单工具->宏->组织宏-> python sheetFunctions.py python脚本下清晰可见,该脚本确实位于文件夹/usr/lib/libreoffice/share/Scripts/python中。

每当我运行SOUNDEX Basic函数时,都会收到以下错误消息:

BASIC runtime error.
An exception occurred 
Type: com.sun.star.script.provider.ScriptFrameworkErrorException
Message: <class 'pythonscript.com.sun.star.ucb.InteractiveAugmentedIOException'>: an error occurred during file opening
  /usr/lib/libreoffice/program/pythonscript.py:429 in function getModuleByUrl() [lastRead = self.sfa.getDateTimeModified( url )]
  /usr/lib/libreoffice/program/pythonscript.py:993 in function getScript() [mod = self.provCtx.getModuleByUrl( fileUri )]

我尝试调试SOUNDEX基本功能,发现阻塞点是程序运行getScript("vnd.sun.star.script:sheetFunctions.py$soundex?language=Python&location=user")的时间。

我已经尝试了几天来解决此错误,但我必须坦白,但未成功。我想知道是否需要在Basic环境中带来一些额外的扩展,还是在Linux / Python中缺少一个插件?我通过 location = document 更改了 location = user ,并再次卡住了。由于命令sudo apt-get install libreoffice-script-provider-python,我最近添加了libreoffice-script-provider-python,但这没有帮助。我还在calc文档中嵌入了Python脚本,但同样不能解决问题。

1 个答案:

答案 0 :(得分:1)

位置名称不匹配。自行编写脚本的标准位置在user directory下。这是location=user,例如~/.config/libreoffice/4/user/Scripts/python

然后是location=share,它指向您问题中的路径。这些参数在URI Specification Python脚本下进行了描述。

另请参阅我对this question的回答。如果尚未尝试,请确保尝试APSO扩展。特别是,APSO在使用location=document时会有所帮助,因为嵌入需要几个步骤,包括编辑manifest.xml。