Código de Python - Guardar el contenido de un QTableWidget a CSV

Imágen de perfil
Val: 2.164
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Guardar el contenido de un QTableWidget a CSVgráfica de visualizaciones


Python

Publicado el 19 de Febrero del 2018 por Xve (285 códigos)
2.410 visualizaciones desde el 19 de Febrero del 2018
Este simple código muestra como guardar el contenido de un QTableWidget a archivo CSV para poder ser abierto desde una hoja de calculo.

qtablewidget-a-csv

Requerimientos

PyQT4

Versión 1.0
estrellaestrellaestrellaestrellaestrella(2)

Publicado el 19 de Febrero del 2018gráfica de visualizaciones de la versión: Versión 1.0
2.411 visualizaciones desde el 19 de Febrero del 2018
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
import sys, csv
from PyQt4 import QtGui, QtCore
 
class Window(QtGui.QWidget):
    def __init__(self, rows, columns):
        QtGui.QWidget.__init__(self)
        self.table = QtGui.QTableWidget(rows, columns, self)
        for column in range(columns - 1):
            for row in range(rows - 1):
                item = QtGui.QTableWidgetItem('Text%d' % row)
                self.table.setItem(row, column, item)
        self.buttonOpen = QtGui.QPushButton('Abrir archivo CSV', self)
        self.buttonSave = QtGui.QPushButton('Guardar archivo CSV', self)
        self.buttonOpen.clicked.connect(self.handleOpen)
        self.buttonSave.clicked.connect(self.handleSave)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.table)
        layout.addWidget(self.buttonOpen)
        layout.addWidget(self.buttonSave)
 
    def handleSave(self):
        path = QtGui.QFileDialog.getSaveFileName(self, 'Guardar archivo', '', 'CSV(*.csv)')
        if not path.isEmpty():
            with open(unicode(path), 'wb') as stream:
                writer = csv.writer(stream)
                for row in range(self.table.rowCount()):
                    rowdata = []
                    for column in range(self.table.columnCount()):
                        item = self.table.item(row, column)
                        if item is not None:
                            rowdata.append(unicode(item.text()).encode('utf8'))
                        else:
                            rowdata.append('')
                    writer.writerow(rowdata)
 
    def handleOpen(self):
        path = QtGui.QFileDialog.getOpenFileName(self, 'Abrir archivo', '', 'CSV(*.csv)')
        if not path.isEmpty():
            with open(unicode(path), 'rb') as stream:
                self.table.setRowCount(0)
                self.table.setColumnCount(0)
                for rowdata in csv.reader(stream):
                    row = self.table.rowCount()
                    self.table.insertRow(row)
                    self.table.setColumnCount(len(rowdata))
                    for column, data in enumerate(rowdata):
                        item = QtGui.QTableWidgetItem(data.decode('utf8'))
                        self.table.setItem(row, column, item)
 
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = Window(10, 5)
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())



Comentarios sobre la versión: Versión 1.0 (2)

19 de Febrero del 2018
estrellaestrellaestrellaestrellaestrella
Hola primero Gracias, pero me da un error PyQt5.QtGui no tiene atributo QWidget
No estoy trabajando con PyQt4 ...como puedo solucionarlo?

Desde ya muchas gracias
Responder
c3rberuss
14 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
En lugar de usar PyQt5.QtGui debes usar PyQt5.QWidget ahí se encuentran todas las clases para la interfaz...
Responder

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s4447