我的函数在保存文件时,每行后面都有一个空格,而且列头也没有保存,这是函数。
def download_results(self):
try:
path = QFileDialog.getSaveFileName(MainWindow, 'Save results', os.getenv('HOME'), 'CSV(*.csv)')
if path[0] != '':
with open(path[0], 'w') as csv_file:
writer = csv.writer (csv_file, dialect = 'excel', delimiter = ',')
for row in range(self.analysis_table.rowCount()):
row_data = []
for column in range(self.analysis_table.columnCount()):
item = self.analysis_table.item(row, column)
if item is not None:
row_data.append(item.text())
else:
row_data.append('')
writer.writerow(row_data)
QMessageBox.information(MainWindow,"Success","Succeeded")
except:
QMessageBox.warning(MainWindow,"Failed","Operation failed.")
你必须使用以下方法从QTableWidgetItem中提取文本 horizontalHeaderItem()
方法。
def download_results(self):
try:
path, _ = QFileDialog.getSaveFileName(
MainWindow, "Save results", os.getenv("HOME"), "CSV(*.csv)"
)
if path:
with open(path, "w", newline='') as csv_file:
writer = csv.writer(csv_file)
headers = []
for c in range(self.analysis_table.columnCount()):
it = self.analysis_table.horizontalHeaderItem(c)
if it is not None:
headers.append(it.text())
else:
headers.append("")
writer.writerow(headers)
for row in range(self.analysis_table.rowCount()):
row_data = []
for column in range(self.analysis_table.columnCount()):
item = self.analysis_table.item(row, column)
if item is not None:
row_data.append(item.text())
else:
row_data.append("")
writer.writerow(row_data)
QMessageBox.information(MainWindow, "Success", "Succeeded")
except:
QMessageBox.warning(MainWindow, "Failed", "Operation failed.")
这就做到了。我对贡献者表示感谢。
def download_results(self):
try:
path = QFileDialog.getSaveFileName(MainWindow, "Save results", os.getenv("HOME"), "CSV(*.csv)")
if path != "":
with open(path[0], "w", newline='') as csv_file:
writer = csv.writer(csv_file)
headers = []
for c in range(self.analysis_table.columnCount()):
it = self.analysis_table.horizontalHeaderItem(c)
if it is not None:
headers.append(it.text())
else:
headers.append("")
writer.writerow(headers)
for row in range(self.analysis_table.rowCount()):
row_data = []
for column in range(self.analysis_table.columnCount()):
item = self.analysis_table.item(row, column)
if item is not None:
row_data.append(item.text())
else:
row_data.append("")
writer.writerow(row_data)
QMessageBox.information(MainWindow, "Success", "Succeeded")
except:
QMessageBox.warning(MainWindow, "Failed", "Operation failed.")