在LibreOffice中运行Python代码

时间:2017-10-04 13:55:28

标签: python matlab jupyter-notebook libreoffice-writer

我目前正试图从MATLAB开始并用Python替换它。我在MATLAB中总是喜欢的功能是(现已弃用)笔记本。基本上,这允许在Microsoft Word文件中运行MATLAB代码并获得输出。它是某种iPython / Jupyter笔记本风格。现在我想问一下,Libre Office Writer中的Python编程有类似的概念。 Jupyter对我来说不是一个选项,因为我想要WYSIWYG编辑之类的东西,以及从我的Notebook中的其他应用程序复制粘贴图像的功能。

MATLAB Notebook

感谢您的任何提示!

彼得

PS:我不是在寻找“Libre Office Macro编程”。

1 个答案:

答案 0 :(得分:0)

我不知道任何内置方式,但我们可以制作一个,改编自How do I execute a string containing Python code in Python?首先设置以下Python macro

import uno
import sys
import io

def run_selected_code():
    oDoc = XSCRIPTCONTEXT.getDocument()
    xTextCursor = oDoc.CurrentController.Selection.getByIndex(0)
    xText = xTextCursor.getText()
    codeOut = io.StringIO()
    codeErr = io.StringIO()
    sys.stdout = codeOut
    sys.stderr = codeErr
    exec(xText.getString())
    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__
    err_string = codeErr.getvalue()
    text = oDoc.getText()
    cursor = text.createTextCursor()
    cursor.gotoEnd(False)
    #text.insertString(cursor, "\n\nerror:\n%s\n" % err_string, False)
    out_string = codeOut.getvalue()
    text.insertString(cursor, "\n\noutput:\n%s" % out_string, False)
    codeOut.close()
    codeErr.close()

g_exportedScripts = run_selected_code,

现在在Writer中输入以下内容。

a = 5
b = 7
print("%d + %d = %d" % (a, b, a + b))

然后选择这三行并转到工具 - >运行宏。宏 - >运行宏。

Writer result