IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

python ezodf2 openoffice [Python 3.X]


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Points : 18
    Points
    18
    Par défaut python ezodf2 openoffice
    Bonjour

    j'arrive a écrire dans un tableau Calc OpenOffice.

    Comment peut-on agir sur la largeur des colonnes (je ne trouve pas de doc)

    Merci d'avance pour vos réponses.

    Cordialement

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Salut,

    Citation Envoyé par triplebi Voir le message
    Comment peut-on agir sur la largeur des colonnes (je ne trouve pas de doc)
    Et vous avez cherché comment? On trouve cela assez facilement...

    - W

  3. #3
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Points : 18
    Points
    18
    Par défaut python uno openoffice
    Merci

    j'ai cherche avec python erzodf2.

    Je ne connais pas uno, je vais me documenter.

    je pense qu'il faut l'installer ?

    Encore merci

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 055
    Points : 9 476
    Points
    9 476
    Par défaut
    Hello,
    Citation Envoyé par triplebi Voir le message
    Merci
    j'ai cherche avec python ezodf2.
    Je ne connais pas uno, je vais me documenter.
    je pense qu'il faut l'installer ?
    ezodf2 n'agit pas à l'intérieur de calc, il permet de traiter les fichiers de type ODF.
    uno est déjà installé dans le python d'OpenOffice et de LibreOffice. Avec une macro python O.O L.O on est capable de faire l'ajustement de colonnes.
    Avec ce code qui correspond à une macro python que l'on appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import uno
     
    def ajusteCols(*args):
        doc = XSCRIPTCONTEXT.getDocument()
        oSheet = doc.Sheets.getByName('Feuille1')
        oColumns = oSheet.getColumns()
        oColumns.getByName("A").Width = 4000 # 4000 = 4 cm
        oColumns.getByName("B").Width = 2000 
        oColumns.getByName("C").Width = 8000
    on obtient ceci :

    Nom : AjusteCols.gif
Affichages : 222
Taille : 48,9 Ko

    Ami calmant, J.P

  5. #5
    Membre à l'essai
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Points : 18
    Points
    18
    Par défaut python uno openoffice
    Merci pour vos explications.

    J’espérais que l'on pouvait 'piloter' OpenOffice avec un programme de python3.

    Dommage et encore Merci.

    Très bon forum.

    Cordialement

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par triplebi Voir le message
    J’espérais que l'on pouvait 'piloter' OpenOffice avec un programme de python3.

    Dommage et encore Merci.
    Cherchez encore: on peut même mettre à jour le document ODF sans passer par OpenOffice/UNO.
    C'est vous qui programmez et qui devez étudier le problème à résoudre en fonction de ce que vous voulez faire et de ce qui est disponible.

    - W

  7. #7
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 055
    Points : 9 476
    Points
    9 476
    Par défaut
    Hello,
    Citation Envoyé par triplebi Voir le message
    J’espérais que l'on pouvait 'piloter' OpenOffice avec un programme de python3.
    tu ne nous as pas dit sous quel O.S tu étais et quelle version d'OpenOffice ou de LibreOffice tu utilisais.


    Sous Linux, LibreOffice utilise le python 3 du système, il installe pyuno dans ce python donc tu dois pouvoir l'utiliser de "l'extérieur". A noter qu'OpenOffice lui utilise du python 2.
    Voici un exemple de code pour "piloter" libreoffice de l'extérieur sous linux (essayé sous Ubuntu 20.04) :

    Exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import uno
    from com.sun.star.connection import NoConnectException
     
    localContext = uno.getComponentContext()
    resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
    try:
        ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
    except NoConnectException as e:
        print("LibreOffice is not running or not listening on the port given - (" + e.Message + ")")
        exit
    smgr = ctx.ServiceManager
    desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
    doc = desktop.loadComponentFromURL("file:///home/user/Documents/ajustementColonnes.ods",
                                       "_blank", 0, [])
    win = doc.CurrentController.Frame.ContainerWindow
    # win.Visible = False # mode invisible
    feuille = doc.Sheets.getByName("Feuille1")
    feuille.getColumns().getByName("D").Width = 4000
    feuille.getColumns().getByName("E").Width = 2000
    feuille.getColumns().getByName("F").Width = 8000
    # doc.Store()   # écrire fichier
    doc.dispose()  #
    A noter que pour que cela fonctionne il faut que LibreOffice soit lancé en mode "écoute" auparavant :
    en mode visible :
    soffice "--accept=socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;"
    en mode invisible :
    soffice "--headless --accept=socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;"
    Sous Windows, on peut piloter LibreOffice, OpenOffice en utilisant les objets COM. Pour cela en python, il faut utiliser win32com qui se trouve dans pywin32.
    Exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from win32com.client import Dispatch
     
    objServiceManager = Dispatch("com.sun.star.ServiceManager")
    w = objServiceManager.CreateInstance("com.sun.star.frame.Desktop")
    doc= w.loadComponentFromURL("file:///d:/dev/LibreOffice/ajustementColonnes.ods",
                                "_blank", 0, [])
    win = doc.CurrentController.Frame.ContainerWindow
    #win.Visible = False # mode invisible
    feuille = doc.Sheets.getByName("Feuille1")
    feuille.getColumns().getByName("D").Width = 4000
    feuille.getColumns().getByName("E").Width = 2000
    feuille.getColumns().getByName("F").Width = 8000
    #doc.Store()   # écrire fichier
    doc.dispose() # fermer fichier
    Ami calmant, J.P

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Python et openOffice calc
    Par mystikilla dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 25/02/2011, 09h27
  2. doc openoffice en python c trop long
    Par watcha2020 dans le forum Général Python
    Réponses: 4
    Dernier message: 01/06/2006, 12h00
  3. Python et OpenOffice
    Par Gamal le Celte dans le forum Bibliothèques tierces
    Réponses: 4
    Dernier message: 10/06/2005, 10h20
  4. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  5. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo