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

OpenOffice & LibreOffice Discussion :

Macro LibreOffice en python : récupérer la valeur d'un champ


Sujet :

OpenOffice & LibreOffice

  1. #1
    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,

    Après avoir pas mal tourné sur les forums pour trouver une solution et ayant un niveau moyen en anglais, je me demande de m'excuser si il y a une réponse simple à trouver que j'ai loupé et lance ma question ici 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 primitives/fonction de l'API de LibreOffice permet d'associer une variable du script à un champ du document Writer (en python) ?

    Merci d'avance !


    Voila en gros le début de mon script, si ça peut vous aider :

    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
    NomDiag = "DiagWin.csv"
    NomPrior = "PriorWin.csv"
    NomLev = "Lev.csv"
    Chemin = "C:/Users/FRC/Desktop/Auto/"
     
    import os
    from os import chdir
    import csv
    import sys
    import webbrowser
     
    chdir(Chemin)
     
    # On récupère la valeur du code entré par l'utilisateur :
    Code=input("Entrez le code (expl : 30000-1):")   # mais imput ne marche pas sous libre-office, il faut trouver un moyen de récuperer la valeur d'un champ
    print(Code)
     
     
    ##########Le remplissage automatique des cases liées au code dans Diag - partie 1############
    fichier1 = open(NomDiag, 'r')
    Diag = csv.DictReader(fichier1, delimiter = ';',quotechar = '"')
     
    LineCode = None
     
    for line in Diag:
        if Code == line["GENERALITES_CODE"] :
            LineCode = line
            break
     
    if LineCode == None:
        print("numero de mare non trouvée dans Diag")                     # afficher un message d'erreur sous libreO
        input("appuyez sur entrer pour sortir du programme")
        sys.exit(-1)

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    je ne vois pas trop bien ce que tu veux faire exactement . Qu'appelles-tu champ dans LibreOffice ? Veux-tu faire un genre de publipostage ? Ton script en python doit-il tourner en macro dans LibreOffice ? Pourquoi ne pas utiliser alors OBasic ? Pourquoi ne pas utiliser une fenêtre de dialogue pour rentrer ton code? Peux-tu mettre en pièce jointe une page exemple de ton fichier writer avec ce que tu appelles champ et un bout des fichiers csv pour voir à quoi ils ressemblent ?

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    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
    Qu'appelles-tu champ dans LibreOffice ?
    Eh bien dans LibreOffice Writer il est possible d'insérer un champ autre que les numéros de pages via "insertion" -> "champ" -> "Autres champs" et d'y définir des variables:

    Nom : ChampLibreO.JPG
Affichages : 1388
Taille : 58,9 Ko

    Je ne vois pas trop bien ce que tu veux faire exactement ? Veux-tu faire un genre de publipostage ?
    Oui c'est un peu l'idée, je voudrais que certaines variables définies dans mon script s'affichent dans les champs LibreOffice dont le nom de variable est semblable. Ou que mes "print()" s'affichent dans ces champs LibreOffice.

    Ton script en python doit-il tourner en macro dans LibreOffice ?
    Oui, à part si il y a moyen de lancer le script depuis LibreOffice et d'afficher son résultat dans le document sans passer par les macros.

    Pourquoi ne pas utiliser alors OBasic ?
    D'une part parce que je ne connaît pas le langage et parce que c'est une demande de mon entreprise d'effectuer le script en python pour un maximum de compatibilité avec les logiciels bureautiques utilisés.

    Pourquoi ne pas utiliser une fenêtre de dialogue pour rentrer ton code?
    Je ne comprend pas ce que tu entends par fenêtre de dialogue...

    Je te met un exemple de mon fichier writer avec un champ de saisie ExplDoc.odt et mes fichiers csv (qui sont pas en csv car l'import de marchait pas pour x raisons...) Diag.ods , Lev.ods , Prior.ods.

    Merci de ton aide !

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    je pense que tu peux t'en sortir sans utiliser de macros, avec LibreOffice Base et Writer. Le principe :

    Tu crées une base de données Libreoffice reliés à tes fichiers csv par connexion JDBC Texte. Tes fichiers csv deviennent des tables pour cette base de données.
    Ensuite, il suffit d'insérer les champs de base données dans ton document writer et pour faire défiler les différents enregistrements d'utiliser l'assistant mailing.
    Voici ce que cela peut donner :
    Nom : Base-writer-mailing-1.png
Affichages : 1459
Taille : 74,6 Ko


    ====================================

    Nom : Base-writer-mailing-2.png
Affichages : 1376
Taille : 53,3 Ko


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    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 (???)
    Sais : imput ou input ?

    Si c'est input dans oBasic, c'est InputBox ("Question", "Titre", "Valeur par défaut").

    Cdlt
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/09/2005, 06h37
  2. API pour récupérer la valeur d'un champ Edit
    Par buteiduil dans le forum Windows
    Réponses: 4
    Dernier message: 15/05/2005, 22h32
  3. Réponses: 1
    Dernier message: 22/02/2005, 23h40
  4. Récupérer la valeur d'un champ disabled
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2005, 10h45
  5. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45

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