本文介绍了PyQt:QTableWidget到.xls文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我有一个QTableWidget,我想使用xlwt模块将其保存到.xls文件中.

代码如下:

def savefile(self):
        filename = unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)"))
        wbk = xlwt.Workbook()
        self.sheet = wbk.add_sheet("sheet")
        self.row = 0
        self.col = 0
        self.add2(self.row, self.col)
        wbk.save(filename)


def add2(self, row, col):
    for i in range(self.tableWidget.columnCount()):
        for x in range(self.tableWidget.rowCount()):
            try:
                teext = str(self.tableWidget.item(row, col).text())
                self.sheet.write(row, col, teext)
                row += 1
            except AttributeError:
                pass
        col += 1

但这只写出单元格0,0中的文本,不写出其他内容.

我想我犯了一些严重的错误…

更新:

def savefile(self):
        filename = unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)"))
        wbk = xlwt.Workbook()
        self.sheet = wbk.add_sheet("sheet", cell_overwrite_ok=True)
        self.add2()
        wbk.save(filename)


def add2(self):
    row = 0
    col = 0
    for i in range(self.tableWidget.columnCount()):
        for x in range(self.tableWidget.rowCount()):
            try:
                teext = str(self.tableWidget.item(row, col).text())
                self.sheet.write(row, col, teext)
                row += 1
            except AttributeError:
                row += 1
        row = 0
        col += 1

已解决问题.

推荐答案

您可能还会发现,使用范围(或xrange)的输出作为tableWidget.Item调用的索引更简洁、更容易,而不是担心增加您自己的计数器。您可能会在代码的其他位置使用工作表本身,但是如果您没有这样做,那么不将工作表指定为您的类的属性变量会节省一些内存:

def savefile(self):
    filename = unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)"))
    wbk = xlwt.Workbook()
    sheet = wbk.add_sheet("sheet", cell_overwrite_ok=True)
    self.add2(sheet)
    wbk.save(filename)

def add2(self, sheet):
    for currentColumn in range(self.tableWidget.columnCount()):
        for currentRow in range(self.tableWidget.rowCount()):
            try:
                teext = str(self.tableWidget.item(currentRow, currentColumn).text()
                sheet.write(currentRow, currentColumn, teext)
            except AttributeError:
                pass

因为您使用的是Range命令,currentColumn变量将从0递增到column nCount(),currentRow将从0递增到currentRow()

这篇关于PyQt:QTableWidget到.xls文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-17 23:03