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

Bibliothèques tierces Python Discussion :

macro pour libreoffice writer et calc


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut macro pour libreoffice writer et calc
    Bonjour,
    je travaillais anciennement sur word et excel où j'avais développé des macros. Je souhaite travailler désormais sous libre office. L'enregistrement des macros est très limitée (stoppe dès l'ouverture d'une boite de dialogue) et le langage vbasic pas simple à mon gout.. Pour développer, j'ai vu que l'on pouvait faire des macros en python (et je connais un peu le langage python). J'ai deux questions que je n'ai pas trouvées dans le forum :
    Précision ; je travaille sous python 3.2.
    Faut-il importer des modules spécifiques pour faire des macros utilisables sous libreoffie? Si oui lesquelles pour writer et calc?
    Connaissez-vous une documentation ou un lien d'exemples pour que je me familiarise avec la syntaxe?
    Merci
    Gabriel

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Service civique : automatisation acquisition de données
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Service civique : automatisation acquisition de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Macro LibreOffice en python : récupérer la valeur d'un champ
    Bonjour,

    je me permet de relancer ce sujet en espérant que vous voudrez bien m'aider.

    J'ai réalisé un script en python pour remplir automatiquement les champs d'une feuille LibreOffice Writer à partir d'informations de .csv
    Or il faut que l'utilisateur rentre un identifiant pour que le script puisse s'effectuer.

    Imput() ne fonctionnant pas dans LibreOffice Writer je me suis dit que je pourrais utiliser les "Champs" de LibreOffice; l'utilisateur rentrerait l'identifiant dedans et mon script pourrait alors le récupérer (???)

    Donc mes questions sont :
    - existe-il une autre solution ?
    - quel module/fonction de python permet d'associer une variable du script à un champ du document Writer ?

    Merci d'avance !

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Sia-Ulrich Voir le message
    Imput() ne fonctionnant pas dans LibreOffice Writer je me suis dit que je pourrais utiliser les "Champs" de LibreOffice; l'utilisateur rentrerait l'identifiant dedans et mon script pourrait alors le récupérer (???)
    Vous avez sur le site de DVP une rubrique OpenOffice/LibreOffice, c'est plutôt là bas qu'il faut demander quelles sont les primitives/fonctions de l'API de LibreOffice utilisables pour réaliser votre dialogue.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Service civique : automatisation acquisition de données
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Service civique : automatisation acquisition de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    désolée, je pensais y être en fait car j'avais trouvé ce fil de discussion en y faisant une recherche.
    J'y vais de ce pas ! Merci !

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 950
    Points : 9 279
    Points
    9 279
    Par défaut
    hello,
    désolé de répondre si tard, Libreoffice à son langage python intégré ( par exemple sous windows , LibreOffice 4.4 à un répertoire où se trouve les binaires et librairies python C:\Program Files (x86)\LibreOffice 4\program\python-core-3.3.3 ). Il faut regarder les modules qui sont inclus dans cet ensemble.
    Il n'y a pas d'éditeur python dans libreoffice, ni de débogeur ce qui incite les gens à plutôt programmer en oBasic. Pour que les macros python soient accessibles dans LibreOffice, il faut qu'elles soient à des endroits particuliers exemple pour des macros personnelles (mesmacros) sous windows : C:\Users\nomuser\AppData\Roaming\LibreOffice\4\user\Scripts\python\

    et voici un exemple de code python (test de code IBAN) pour une feuille calc :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #   exemple de macro python pour libreoffice
    #   macro en : C:\Users\<nom du user>\AppData\Roaming\LibreOffice\4\user\Scripts\python\testIban.py
    #   Outils/Macros/Gérer les Macros/Python  Mes Macros/testIBan   exécuter test_valid_iban
    #   testé avec Libreoffice 4.3 sous WINDOWS 7
    #   J.P  décembre
    #
    import re
     
    _country2length = dict(
        AL=28, AD=24, AT=20, AZ=28, BE=16, BH=22, BA=20, BR=29,
        BG=22, CR=21, HR=21, CY=28, CZ=24, DK=18, DO=28, EE=20,
        FO=18, FI=18, FR=27, GE=22, DE=22, GI=23, GR=27, GL=18,
        GT=28, HU=28, IS=26, IE=22, IL=23, IT=27, KZ=20, KW=30,
        LV=21, LB=28, LI=21, LT=20, LU=20, MK=19, MT=31, MR=27,
        MU=30, MC=27, MD=24, ME=22, NL=18, NO=15, PK=24, PS=29,
        PL=28, PT=25, RO=24, SM=27, SA=24, RS=22, SK=24, SI=19,
        ES=24, SE=24, CH=21, TN=24, TR=26, AE=23, GB=22, VG=24 )
     
    def valid_iban(iban):
        # Ensure upper alphanumeric input.
        iban = iban.replace(' ','').replace('\t','')
        if not re.match(r'^[\dA-Z]+$', iban): 
            return False
        # Validate country code against expected length.
        if len(iban) != _country2length[iban[:2]]:
            return False
        # Shift and convert.
        iban = iban[4:] + iban[:4]
        digits = int(''.join(str(int(ch, 36)) for ch in iban)) #BASE 36: 0..9,A..Z -> 0..35
        return digits % 97 == 1
     
    def test_valid_iban( ):
        """on ecrit des IBAN en cellules A:1 et A:2 on les teste si non valide on le met en rouge"""
    #get the doc from the scripting context which is made available to all scripts
        desktop = XSCRIPTCONTEXT.getDesktop()
        calc = desktop.getCurrentComponent()
        sheet = calc.getSheets().getByIndex(0) #1ere feuille du classeur
        sheet.getCellByPosition(0, 0).setString("GB82 WEST 1234 5698 7654 32") # On écrit un IBAN valide en cellule A:1
        sheet.getCellByPosition(0, 1).setString("GB82 TEST 1234 5698 7654 32") # On écrit un IBAN non valide en cellule A:2
        # on balaie les lignes pour tester les IBAN
        for i in range(0,2):
             ibanIsValid = valid_iban(sheet.getCellByPosition(0, i).getString())
             if ibanIsValid:
                sheet.getCellByPosition(0, i).setPropertyValue( "CharColor", 0x000000 ) # Police en noir
             else:
                sheet.getCellByPosition(0, i).setPropertyValue( "CharColor", 0xff0000 ) # Police en rouge
        return None
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Service civique : automatisation acquisition de données
    Inscrit en
    Avril 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Service civique : automatisation acquisition de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour ta réponse et pour l'exemple. Je vais essayer de regarder ces modules.

    Je ne vais plus avoir trop de temps professionnel a mettre dans cet essai mais je vais essayer sur mon temps libre :p

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/04/2014, 19h26
  2. [OpenOffice][Tableur] Macro pour calc
    Par steevester dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 12/05/2009, 01h16
  3. macro pour un malloc
    Par salseropom dans le forum C
    Réponses: 4
    Dernier message: 15/02/2006, 10h53
  4. macro pour splashscreen
    Par stoads dans le forum IHM
    Réponses: 20
    Dernier message: 26/11/2005, 12h33
  5. [VBA-E] [help]macro pour dupliquer une feuille (en valeur)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 07/11/2005, 19h24

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