从 Excel 填充 QTableWidget

Populate QTableWidget from Excel

我使用 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)

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

  1. 提取headers
  2. 提取每列的值
  3. 生成您的 QTableWidget 并用数据填充它

您如何阅读 headers 在某种程度上取决于您的期望,如果您对输入数据做出 没有 假设,那么您将没有 headers .

在这里,我假设 headers 在第一行。从您留下数据的地方开始,这里是如何从数据填充 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 自动决定是否显示滚动条,但您可能想覆盖它。