PyQt:QTableWidget到.xls fi

2024-09-27 07:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有一个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             

解决了这个问题。。。


Tags: inselffordefrangecolfilenamexls
1条回答
网友
1楼 · 发布于 2024-09-27 07:18:39

您还可能发现,使用范围(或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增加到columnCount(),currentRow将从0增加到currentRow()

相关问题 更多 >

    热门问题