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

GUI Python Discussion :

qtableWidget vers un fichier csv


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Génie Civil
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur Génie Civil

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Par défaut qtableWidget vers un fichier csv
    bonsoir à tous

    comment exporter un qtableWidget vers un fichier csv

    Nom : save.PNG
Affichages : 1187
Taille : 36,3 Ko

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai modifié le code que je t'ai déjà donné, en ajoutant l'enregistrement du contenu du QTableWidget dans un fichier csv:

    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
    #! /usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    import csv
     
    ##############################################################################
    class MainWindow(QtWidgets.QMainWindow):
     
        #=========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
            self.resize(600, 250)
     
            # on crée un QTableWidget 5x5
            self.tableWidget = QtWidgets.QTableWidget(self)
            self.tableWidget.setRowCount(5)
            self.tableWidget.setColumnCount(5)
     
            # on remplit les cases avec des QTableWidgetItem
            for row in range(0, self.tableWidget.rowCount()):
                for col in range(0, self.tableWidget.columnCount()):
                    item = QtWidgets.QTableWidgetItem("{}x{}".format(row, col))
                    self.tableWidget.setItem(row, col, item)
     
            # chaque changement de valeur des cases lancera la méthode "changedata"
            self.tableWidget.itemChanged.connect(self.changedata)                
     
            # on positionne le QTableWidget dans la fenêtre QMainWindow
            self.setCentralWidget(QtWidgets.QFrame())
            layout = QtWidgets.QGridLayout()
            layout.addWidget(self.tableWidget, 0, 0)
            self.centralWidget().setLayout(layout)
     
        #=========================================================================
        def changedata(self, item):
            """méthode lancée à chaque modification du contenu d'une case
            """
            # ligne et colonne de la case ayant lancé la méthode
            row = item.row()
            col = item.column()
            # récup de la valeur modifiée
            valeur = self.tableWidget.item(row, col).text().strip()
            # affichage de la nouvelle valeur de la case [row, col]
            QtWidgets.QMessageBox.information(self, 
                "Modification", 
                "Case: [{},{}]   Nouvelle valeur: {}".format(row, col, valeur)
                )
     
        #=========================================================================
        def sauvecsv(self, fichiercsv):
            """Lit le QTableWidget et enregistre son contenu dans un fichier csv
            """
            with open(fichiercsv, 'w', newline='') as csvfile:
                csvwriter = csv.writer(csvfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)
                for row in range(0, self.tableWidget.rowCount()):
                    ligne = []
                    for col in range(0, self.tableWidget.columnCount()):
                        valeurcase = self.tableWidget.item(row, col).text().strip()
                        ligne.append(valeurcase)
                    csvwriter.writerow(ligne)
     
        #=========================================================================
        def keyPressEvent(self, event):
            """Interception des touches reçues du clavier
            """
            if event.key()==QtCore.Qt.Key_S and (event.modifiers() & QtCore.Qt.AltModifier):
                # on a tapé Alt-S au clavier
                self.sauvecsv("monfichier.csv") # => enregistrement des données
                event.accept()
            else:
                event.ignore() # transmission du QEvent à l'ancêtre
     
    ##############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())
    J'ai rempli les cases avec un texte du genre "1x1" (numéro de ligne x numéro de colonne)

    J'ai ajouté un "keyPressEvent" pour récupérer un "Alt-S" tapé au clavier qui lancera l'enregistrement par la méthode sauvecsv

    C'est la méthode sauvecsv(fichiercsv) qui va lire le contenu du QTableWidget et l'enregistrer dans le fichier csv.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Génie Civil
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur Génie Civil

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Par défaut
    Toujours grand; mon ami merci beaucoup

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

Discussions similaires

  1. Exporter une table MySQL vers un fichier CSV
    Par sam01 dans le forum Outils
    Réponses: 2
    Dernier message: 07/08/2007, 16h44
  2. [ODBC] problème d'export du contenu de <textarea> vers un fichier csv
    Par maraly dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 27/04/2007, 09h14
  3. [Macro]exporter une table vers un fichier.csv
    Par samca dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2007, 21h25
  4. Réponses: 12
    Dernier message: 07/12/2005, 18h42
  5. [Oracle] export vers un fichier csv
    Par illegalsene dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/10/2005, 23h58

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