Lien avec OpenOffice

Cet page présente un exemple simple pour créer un document de type tableur avec OpenOffice. Avant l’exécution il faut lancer libreoffice ou openoffice en mode serveur (les paramètres sont les mêmes).

 libreoffice -accept="socket,host=localhost,port=2002;urp;"
pythonOpenofficeExample.py
import uno
 
# A recopier systématiquement
class UnoClient:
    def __init__(self):
        localContext = uno.getComponentContext()
        resolver = localContext.ServiceManager.createInstanceWithContext(
            "com.sun.star.bridge.UnoUrlResolver", localContext)
        self.smgr = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ServiceManager")
 
    def create_document(self, app):
        remoteContext = self.smgr.getPropertyValue("DefaultContext")
        desktop = self.smgr.createInstanceWithContext("com.sun.star.frame.Desktop", remoteContext)
        url = "private:factory/{0}".format(app)
        return desktop.loadComponentFromURL(url, "_blank", 0, ())
 
def testLibreOffice(data):
    #creation  d'un nouveau classeur dans le logiciel ouvert
    calc = UnoClient().create_document('scalc')
 
    #Accès à la première feuille du classeur
    sheet = calc.getSheets().getByIndex(0)
 
    #Création de valeurs et de formules    
    sheet.getCellByPosition(0, 0).setString("Salut") #Un texte
    sheet.getCellByPosition(0, 1).setValue(3.14) #Un nombre
    sheet.getCellByPosition(0, 2).setFormula("=SUM(2+2)") #Une formule
 
    #Gestion de la mise en page
    sheet.getCellByPosition(0, 2).CellBackColor = int("ff7f00", 16)
    sheet.getCellByPosition(0, 2).CharUnderline = 1 
    sheet.getCellByPosition(0, 2).CharHeight = 16 
    sheet.getCellByPosition(0, 2).CharWeight = 150 
    sheet.getCellByPosition(0, 2).CharPosture = 2 

—- dataentry page —- type : Howto technologie_tags : Python, Libreoffice, Openoffice, UNO