2017-10-04 7 views
1

J'essaie actuellement de quitter MATLAB et de le remplacer par Python. Une fonctionnalité que j'aimais toujours dans MATLAB sont les ordinateurs portables (maintenant obsolètes). Fondamentalement, cela permet d'exécuter du code MATLAB dans un fichier Microsoft Word et d'obtenir la sortie. C'est une sorte de style iPython/Jupyter Notebook. Maintenant, je voudrais demander, où il y a un concept similaire pour la programmation Python dans Libre Office Writer. Jupyter n'est pas une option pour moi, car je veux des choses comme l'édition WYSIWYG et la capacité de copier et coller des images provenant d'autres applications dans mon Notebook.Exécuter du code Python dans LibreOffice

MATLAB Notebook

Merci pour toutes les notes!

Peter

PS: Je ne cherche pas "Libre Office Macro programmation".

Répondre

0

Je ne connais pas de façon intégrée, mais nous pouvons en faire un, adapté de How do I execute a string containing Python code in Python? D'abord mis en place le 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, 

Maintenant dans Writer, entrez ce qui suit.

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

Sélectionnez ensuite ces trois lignes et exécutez la macro en allant à Outils -> Macros -> Macro Exécuter.

Writer result