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 :

Extraire les valeurs d'une ligne d'un tableau excel avec python 34 [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 7
    Points
    7
    Par défaut Extraire les valeurs d'une ligne d'un tableau excel avec python 34
    Bonjour a tous

    Je reformule ma question, en utilisant python 34 et XLRD ou PANDAS, je voudrais

    extraire un resultat d'un tableau excel.

    Un tableau de deux colonnes NOM et ADRESSE. En tapant le nom dans un "entry" je

    voudrais avoir l'adresse dans un label.

    Le tableau excel comporte 9878 lignes, remplacé tous les mois.

    Merci d'avance pour votre aide.

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

    Il faudrait peut être commencer par lire le fichier XL et le mettre sous forme d'un dict Python afin que dict.get('nom') retourne adresse.
    L'interface utilisateur: saisir le nom via une Entry, rechercher l'adresse dans le dict et mettre à jour un Label est une autre étape.

    Vous avez peut être des soucis pour réaliser l'une ou l'autre ces parties, mais si vous ne postez pas un peu de code en expliquant les difficultés rencontrées, pas facile de vous aider.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour wiztricks
    Je vais chercher dans cette direction, lire les tutos et commencer a coder, si je bloque, je recontacte.
    Merci

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 7
    Points
    7
    Par défaut python et csv
    Bonjour
    J'ai avance un peu sur mon probleme. Pour extraire une info d'un fichier excel de 9000 lignes et +, j'ai choisi de travailler avec du csv.
    Je voulais entrer un numero d' ID dans un "entry" puis en tapant sur "enter" avoir le nom du client dans un "label". Actuellement je me retrouve avec un input et un label dans une fenetre. Le code fonctionne en testant avec "pyscripter" mais quant je le compile, plus rien ?? Pourriez vous m'aider a faire un pas de plus, svp. Merci d'avance
    Voici le fichier csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id,"client"
    1,"tintin"
    2,"dupont"
    et voici mon 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
    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
    48
    49
    50
    51
    52
    53
    # #############################################
    #    modules                                  #
    # #############################################
    from tkinter import *
    import csv
     
    # #############################################
    #    methodes                                 #
    # #############################################
    def quit():
        fen.destroy()
     
     
     
    # #############################################
    #    programme                                #
    # #############################################
    fen=Tk()
     
    with open('IdClients.csv') as csvfile:
        readCSV = csv.reader(csvfile, delimiter=',')
        ids = []
        clients = []
        for row in readCSV:
            id = row[0]
            client = row[1]
     
            ids.append(id)
            clients.append(client)
     
        print(ids)
        print(clients)
     
     
        quelid = input('Quel est l ID du client ?: ')
     
        coldex=ids.index(quelid)
        LeClient=clients[coldex]
        print(" le client correspondant a l ID  ",quelid," est :",LeClient)
     
    cadre=Frame(fen)
    cadre.pack()
    label=Label(cadre,text=quelid+" = "+LeClient,font= ("cambia 12 "))
    label.grid(row=1,column=1)
     
     
     
    f = Button(fen, text="quit", width=10, command=quit)
    f.pack(side=BOTTOM)
     
     
    fen.minsize(260,150)
    fen.mainloop()

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

    Citation Envoyé par pascaljqt Voir le message
    Le code fonctionne en testant avec "pyscripter" mais quant je le compile, plus rien ??
    Python étant un langage interprété, dire "quand je compile" n'a pas de sens: vous faites quoi exactement?

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

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    Pour passer le code en .exe j'utilise "cx_freeze".??
    Bon WE

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    J'ai avancé un peu, voici mon fichier csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id	client
    1	tintin
    2	dupont
    3	dupont
    et mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    # #############################################
    from tkinter import *
    import csv
    # #############################################
    #    methodes                                 #
    # #############################################
    def quit():
        fen.destroy()
     
     
    # #############################################
    #    programme                                #
    # #############################################
    fen=Tk()
     
    with open('IdClients.csv') as csvfile:
        readCSV = csv.reader(csvfile, delimiter=',')
        ids = []
        clients = []
        for row in readCSV:
            id = row[0]
            client = row[1]
            ids.append(id)
            clients.append(client)
            if row[1] == "dupont":
                print(row[0])
     
    f = Button(fen, text="quit", width=10, command=quit)
    f.pack(side=BOTTOM)
     
    fen.minsize(260,150)
    fen.mainloop()
    quand je teste le code avec idle, j'ai bien la bonne reponse = deux ids, bien
    Mon pb habituel et toujours le meme, comment avoir "dupont" dans un "entry" et la reponse ( row[0]) dans un label.
    Merci de me mettre sur la voie
    Bonne semaine

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

    Citation Envoyé par pascaljqt Voir le message
    Mon pb habituel et toujours le meme, comment avoir "dupont" dans un "entry" et la reponse ( row[0]) dans un label.
    Merci de me mettre sur la voie
    Si vous ne savez pas programmer une interface graphique, vous avez beaucoup de choses à apprendre.
    Il y a des tutos. bien faits pour çà.

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

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    J'ai bien avancé, le code fonctionne entierement . dans la premeiere entry je rentre la date sous forme "02/05/2016", dans la deuxieme "dupont" + entre et j'obtient "2" = l'ID correcte.Pour le completer je voudrais creer 3 bouton qui entreraient automatiquement la date d'aujourd'hui, ou demain ou ap demain, et la je bloque.. please tks

    Voici le code pour ceux que ca pourait aider( en suprimant le bouton)
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    # #############################################
    #    modules                                  #
    # #############################################
    from tkinter import *
    import csv
    # #############################################
    #    methodes                                 #
    # #############################################
     
    def now():
        # Get today.
        today = date.today()
        entree_date.get()
    def tomorrow():
        # Add one day delta.
        return date.today() + timedelta(days=1)
     
    def afttomorrow():
        # Add one day delta.
        return date.today() + timedelta(days=2)
     
    def quit():
        fen.destroy()
     
    def recherche(event):
        with open('IdClients.csv') as csvfile:
            readCSV = csv.reader(csvfile, delimiter=',')
            liste_id = []
            liste_client = []
            liste_date = []
            for row in readCSV:
                id = row[0]
                client = row[1]
                date = row[2]
     
                if row[2] == vardate.get():
                    if row[1]== varclient.get():
     
                        var_id.set(row[0])
                        print(row[0])
     
     
    # #############################################
    #    programme                                #
    # #############################################
    fen=Tk()
     
    vardate=StringVar()
    entree_date=Entry(fen,textvariable=vardate,validate="key")
    entree_date.pack()
     
    varclient=StringVar()
    entree_client=Entry(fen,textvariable=varclient,validate="key")
    entree_client.bind("<Return>", recherche)
    entree_client.pack()
     
     
     
    # affichage resultat
    var_id=StringVar()
    label_id = Label(fen, textvariable=var_id)
    label_id.pack()
     
    bouton_aujourdhui=Button(fen,text="aujourd hui", command=now)
    bouton_aujourdhui.pack()
     
    f = Button(fen, text="quit", width=10, command=quit)
    f.pack(side=BOTTOM)
     
     
    fen.minsize(260,150)
    fen.mainloop()
    exit(0)
     
    #Remplacer mon_label par le nom du label
    # mon_label["text"] = row[0]
     
    #Et il faut que row[0] renvoie une chaîne de caractères
    #Si ce n'est pas le cas, il faudra faire la conversion
    #mon_label["text"] = str(row[0])

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

Discussions similaires

  1. [Débutant] Extraire les valeurs d'une colonne d'un tableau en plage
    Par wholehog2 dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/01/2016, 13h12
  2. Récupérer les valeurs d'une ligne d'une datagrid (Silverlight)
    Par johnaliashead dans le forum Silverlight
    Réponses: 2
    Dernier message: 14/04/2010, 16h01
  3. Réponses: 1
    Dernier message: 11/03/2010, 14h47
  4. Réponses: 1
    Dernier message: 05/05/2009, 10h40
  5. [AC-2007] Alimenter une Liste par les valeurs d'une ligne
    Par curt dans le forum IHM
    Réponses: 11
    Dernier message: 19/04/2009, 12h00

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