从 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 中,您需要将其分成几个步骤:
- 提取headers
- 提取每列的值
- 生成您的 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 中。
注意几点:
- 一些excel 文件有填充列和行。您可能想要删除只有空值的行和列(检查空字符串)。
- 您的列或行可能比所需的多得多,在这种情况下您需要滚动条,或者可能有适合您的投影的数据(无滚动条)。 Qt 自动决定是否显示滚动条,但您可能想覆盖它。
我使用 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 中,您需要将其分成几个步骤:
- 提取headers
- 提取每列的值
- 生成您的 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 中。
注意几点:
- 一些excel 文件有填充列和行。您可能想要删除只有空值的行和列(检查空字符串)。
- 您的列或行可能比所需的多得多,在这种情况下您需要滚动条,或者可能有适合您的投影的数据(无滚动条)。 Qt 自动决定是否显示滚动条,但您可能想覆盖它。