首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Excel中填充QTableWidget

从Excel中填充QTableWidget
EN

Stack Overflow用户
提问于 2015-12-22 00:27:07
回答 1查看 4K关注 0票数 3

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

代码语言:javascript
运行
复制
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代码

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-22 00:45:21

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

  1. 提取标头
  2. 提取每个列的值。
  3. 生成QTableWidget并用数据填充它

如何读取标头在某种程度上取决于您的期望,如果您使没有对输入数据的假设,那么您将没有标题。

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

代码语言:javascript
运行
复制
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会自动决定是否显示滚动条,但您可能要重写它。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34406650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档