Ant*_*040 9 python xls pyqt qtablewidget
所以,我有一个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
Run Code Online (Sandbox Code Playgroud)
但是,这只写出了来自单元格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
Run Code Online (Sandbox Code Playgroud)
解决了这个问题......
您可能还会发现使用范围(或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
Run Code Online (Sandbox Code Playgroud)
因为您使用的是 range 命令,所以 currentColumn 变量将从 0 递增到 columnCount(),currentRow 将从 0 递增到 currentRow()