Libreoffice 宏如何通过 shell 函数使用外部 python(非嵌入式)脚本

Libreoffice macro how to use external python (not embedde) script througth shell function

Libreoffice 宏 shell 函数在 shell、PHP 或其他非 python 时工作正常 但是 shell("x.py") 被强制只使用嵌入式 python。我想使用外部 python ,也许存在一些解决方法。

我假设您是在询问有关从 LibreOffice Basic 宏进行调用的问题,因为 Shell 是 Basic 函数。例如,您的代码可能如下所示:

Sub CallPython
    filepath = "C:\Python33\python.exe C:\OurDocs\x.py"
    Shell(filepath,2)
End Sub

我想知道您的系统使用的 "embedded python" 版本。要找出答案,请将此代码放入 x.py:

import sys
# change this path to a directory located on your system
with open("c:/users/jimstandard/desktop/x.txt", 'w') as f:
    f.write(sys.version)

要使用不同版本的 Python,请在上面的 filepath 变量中使用不同的路径。

我经常在 LibreOffice 中使用 Python,但我不这样做。相反,我使用 PyUNO 编写宏,它通常根本不涉及 Basic。也许这就是您真正想要做的。所有宏代码都放在 Python 文件中,并以 Python 而不是 Basic.

编写

有关如何使用 PyUNO 的信息,请参阅 https://wiki.openoffice.org/wiki/Python

解决方法如下:

  1. 创建带有文本的 bat 文件

    C:\external_python\python.exe my_py.py
    
  2. 运行 来自基本

    oSvc = createUnoService("com.sun.star.system.SystemShellExecute")
    oSvc.execute(ConvertToUrl("C:\Windows\explorer.exe "),"D:\my_bat.bat", 0)