Python 在excel中导出带有标题的表格小部件

Python 在excel中导出带有标题的表格小部件,python,pyqt,pyqt5,qtablewidget,Python,Pyqt,Pyqt5,Qtablewidget,我需要导出一个表格小部件作为一个excel文件,包括垂直和水平标题 此代码允许执行此操作,但不包含标题: def createTable(self): # Create table self.tableWidget = QTableWidget() self.tableWidget.setRowCount(4) self.tableWidget.setColumnCount(2) self.tableWidget.setHorizontalHeade

我需要导出一个表格小部件作为一个excel文件,包括垂直和水平标题

此代码允许执行此操作,但不包含标题:

    def createTable(self):
   # Create table
    self.tableWidget = QTableWidget()
    self.tableWidget.setRowCount(4)
    self.tableWidget.setColumnCount(2)
    self.tableWidget.setHorizontalHeaderLabels(['a','b'])
    print(self.tableWidget.horizontalHeaderItem(1).text())
    self.tableWidget.setItem(0,0, QTableWidgetItem("Cell (1,1)"))
    self.tableWidget.setItem(0,1, QTableWidgetItem("Cell (1,2)"))
    self.tableWidget.setItem(1,0, QTableWidgetItem("Cell (2,1)"))
    self.tableWidget.setItem(1,1, QTableWidgetItem("Cell (2,2)"))
    self.tableWidget.setItem(2,0, QTableWidgetItem("Cell (3,1)"))
    self.tableWidget.setItem(2,1, QTableWidgetItem("Cell (3,2)"))
    self.tableWidget.setItem(3,0, QTableWidgetItem("Cell (4,1)"))
    self.tableWidget.setItem(3,1, QTableWidgetItem("Cell (4,2)"))
    self.tableWidget.move(0,0)

    # table selection change
    self.tableWidget.doubleClicked.connect(self.on_click_table)

def savefile(self):
    filename = QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)")
    wbk = xlwt.Workbook()
    sheet = wbk.add_sheet("sheet", cell_overwrite_ok=True)
    for currentColumn in range(self.tableWidget.columnCount()):
        for currentRow in range(self.tableWidget.rowCount()):
            teext = str(self.tableWidget.item(currentRow, currentColumn).text())
            sheet.write(currentRow, currentColumn, teext)
    wbk.save(filename[0])
这就是输出:

如何可能包含标题


Tks

最简单的方法是使用模型而不是项目,其思想只是移动索引:

def savefile(self):
    filename,_ = QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)")
    wbk = xlwt.Workbook()
    sheet = wbk.add_sheet("sheet", cell_overwrite_ok=True)
    style = xlwt.XFStyle()
    font = xlwt.Font()
    font.bold = True
    style.font = font
    model = self.tableWidget.model()
    for c in range(model.columnCount()):
        text = model.headerData(c, QtCore.Qt.Horizontal)
        sheet.write(0, c+1, text, style=style)

    for r in range(model.rowCount()):
        text = model.headerData(r, QtCore.Qt.Vertical)
        sheet.write(r+1, 0, text, style=style)

    for c in range(model.columnCount()):
        for r in range(model.rowCount()):
            text = model.data(model.index(r, c))
            sheet.write(r+1, c+1, text)
    wbk.save(filename)

像往常一样完美。我想加深对模型的理解,你能给我一些信息来源吗?TKST对我来说很难。。。我仍然感到困惑:我有两种不同类型对象的代码,表视图,你建议我用它来加载pandas DataFrames和table小部件。我学会了如何编辑它们,添加/删除列,并导出具有模型的列,如上所述。现在,我需要实现能够灵活加载和保存数据帧和excel文件的表。我能做什么?必须使用哪个对象?你能私下支持我吗?尖沙咀