Jan-17-2020, 10:31 AM
(This post was last modified: Jan-17-2020, 10:31 AM by Axel_Erfurt.)
change
if your delimiter is comma
I've changed buttons layout.
delimiter='\t'
in line 37 and line 56 to your delimiterif your delimiter is comma
delimiter=','
I've changed buttons layout.
#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys, csv from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * class Window(QWidget): def __init__(self, rows, columns): QWidget.__init__(self) self.table = QTableWidget(rows, columns, self) for column in range(columns - 1): for row in range(rows - 1): item = QTableWidgetItem('Text%d' % row) self.table.setItem(row, column, item) self.buttonOpen = QPushButton('Open', self) self.buttonOpen.setFixedWidth(100) self.buttonSave = QPushButton('Save', self) self.buttonSave.setFixedWidth(100) self.buttonOpen.clicked.connect(self.handleOpen) self.buttonSave.clicked.connect(self.handleSave) layout = QVBoxLayout(self) layout.addWidget(self.table) empty = QWidget() btnGroup = QHBoxLayout() btnGroup.addWidget(self.buttonOpen) btnGroup.addWidget(self.buttonSave) btnGroup.addWidget(empty) layout.addLayout(btnGroup) def handleSave(self): path,_ = QFileDialog.getSaveFileName( self, 'Save File', '', 'CSV(*.csv)') if path: with open(path, 'w') as stream: writer = csv.writer(stream, delimiter='\t') 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( item.text()) else: rowdata.append('') writer.writerow(rowdata) def handleOpen(self): path,_ = QFileDialog.getOpenFileName( self, 'Open File', '', 'CSV Files(*.csv)') if path: with open(path, 'r') as stream: self.table.setRowCount(0) self.table.setColumnCount(0) for rowdata in csv.reader(stream, delimiter='\t'): row = self.table.rowCount() self.table.insertRow(row) self.table.setColumnCount(len(rowdata)) for column, data in enumerate(rowdata): item = QTableWidgetItem(data) self.table.setItem(row, column, item) if __name__ == '__main__': app = QApplication(sys.argv) window = Window(10, 5) window.resize(640, 480) window.show() sys.exit(app.exec_())