2017-10-04 67 views
1

我目前正在嘗試從MATLAB中取消並將其替換爲Python。我常常在MATLAB中喜歡的功能是(現在已經棄用的)筆記本電腦。基本上,這允許在Microsoft Word文件中運行MATLAB代碼並獲取輸出。這是某種iPython/Jupyter筆記本風格。現在我想問一下,在Libre Office Writer中是否還有類似的Python編程概念。 Jupyter對我來說不是一種選擇,因爲我想要所見即所得的編輯和從我的筆記本中的其他應用程序複製和粘貼圖像的功能。在LibreOffice中運行Python代碼

MATLAB Notebook

感謝您的任何提示! PS:我不是在尋找「自由辦公室宏編程」。我不是在尋找「自由職業者宏編程」。我不是在尋找「自由職業者宏編程」。

回答

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