从Excel填充QTableWidget

时间:2015-12-22 00:27:07

标签: python pyqt pyqt4 xlrd

我已经使用xlrd导入excel文件。没有关于如何将这些数据填充到QTableWidget的教程。 导入excel的代码:

import xlrd

book = xlrd.open_workbook('bioreactorfinal.xlsx')
sheet = book.sheets() [1]
data = [[sheet.cell_value(r,c) for c in range (sheet.ncols)]for r in range(sheet.nrows)]
print(data)

QTableWidget的代码

self.tableWidget.setColumnCount(32)
self.tableWidget.setRowCount(32)

for row, columnvalues in enumerate(data):
    for column, value in enumerate(columnvalues):
        item = QtGui.QTableWidgetItem(value)
        self.tableWidget.setItem(row, column, item)

1 个答案:

答案 0 :(得分:2)

为了将其填充到QTableWidget中,您需要将其分成几个步骤:

  1. 提取标题
  2. 提取每列的值
  3. 生成您的QTableWidget并将其填入数据
  4. 如何阅读标题取决于您的期望,如果您对输入数据做出 no 假设,那么您将没有标题。

    在这里,我假设标题位于第一行。从离开数据的位置开始,以下是如何从数据填充QTableWidget:

    from PySide import QtGui
    
    data = [[sheet.cell_value(r,c) for c in range (sheet.ncols)] for r in range(sheet.nrows)]
    
    app = QtGui.QApplication([])
    mytable = QtGui.QTableWidget()
    
    # skip these lines if you don't have headers
    headers = data[0]
    data = data[1:]
    self.setHorizontalHeaderLabels(headers)
    # stop skipping lines
    
    for row, columnvalues in enumerate(data):
        for column, value in enumerate(columnvalues):
            item = QtGui.QTableWidgetItem(value)
            mytable.setItem(row, column, item)
    

    这只是一个非常基本的模板,但是关于如何将Excel工作表转换为QTableWidget的一般概念。然后,您可以将其嵌入到QMainWindow或QDialog中。

    要注意的一些事项:

    1. 某些Excel文件包含填充列和行。您可能希望删除仅包含空值的行和列(检查空字符串)。
    2. 您可能拥有比所需更多的列或行,在这种情况下,您需要滚动条,或者可能包含适合您投影的数据(无滚动条)。 Qt自动决定是否显示滚动条,但您可能想要覆盖它。