Excel导入数据库,并显示在Qt Designer设计的界面中的QTableWidget

Excel导入数据库

参考链接

读取MySQL并显示在QTableWidget

参考链接

class WindowLogic(QMainWindow, uiData):
    def __init__(self):
        super(WindowLogic, self).__init__()
        self.setupUi(self)
        self.run()

    '''设置按钮逻辑操作'''
    def run(self):
        self.return_pushButton.clicked.connect(self.returnWindow)  # 返回上一级菜单
        self.connect_database_pushButton.clicked.connect(self.connectDatabase_)  # 连接数据库
        self._translate = QtCore.QCoreApplication.translate

    '''连接数据库函数'''
    def Table_Data(self, i, j, data):
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(i, j, item)
        item = self.tableWidget.item(i, j)
        item.setText(self._translate("Form", str(data)))
    def connectDatabase_(self):
        # 获取数据库登录信息
        HostName = self.host_name_lineEdit.text()  # 获取主机名称
        Port = self.port_lineEdit.text()  # 获取端口名称
        UserName = self.user_name_lineEdit.text()  # 获取用户名
        PassWd = self.pwd_lineEdit.text()  # 获取密码
        DatabaseName = self.database_name_lineEdit.text()  # 获取数据库名称
        # 连接数据库
        db = DatabaseOperations.dataImport_get_conn(HostName, int(Port), UserName, PassWd, DatabaseName)
        '''读取数据库数据'''
        cursor = db.cursor()  # 创建游标
        cursor.execute('SELECT * FROM data')  # 查询数据库
        data = cursor.fetchall()  # 获取查询结果
        print("数据查询成功")
        
        col_result = cursor.description
        self.row = cursor.rowcount  # 取得记录个数,用于设置表格的行数
        self.vol = len(data[0])  # 取得字段数,用于设置表格的列数
        col_result = list(col_result)

        # 在使用QTableWidget之前,设置正确的行数和列数
        self.tableWidget.setRowCount(self.row)
        self.tableWidget.setColumnCount(self.vol)  # 假设所有行的列数相同,可以根据实际情况修改
        a = 0
        for i in col_result:  # 设置表头信息,将mysql数据表中的表头信息拿出来,放进TableWidget中
            item = QtWidgets.QTableWidgetItem()
            self.data_tableWidget.setHorizontalHeaderItem(a, item)
            item = self.data_tableWidget.horizontalHeaderItem(a)
            item.setText(self._translate("Form", i[0]))
            a = a + 1

        total = list(data)  # 将数据格式改为列表形式,其是将数据库中取出的数据整体改为列表形式
        for i in range(len(data)):  # 将相关的数据
            total[i] = list(data[i])  # 将获取的数据转为列表形式
        for i in range(self.row):
            for j in range(self.vol):
                self.Table_Data(i, j, total[i][j])
        # 关闭数据库
        DatabaseOperations.close_conn(db, cursor)

实现右侧下侧滑动条来控制数据显示

在这里插入图片描述

class MainWindowLogic(QMainWindow, uiDataQuery):
    def __init__(self):
        super(MainWindowLogic, self).__init__()
        self.setupUi(self)
        self.Scrollbar()
        self.run()
    '''滚轮滑动'''
    def Scrollbar(self):
        # Set the horizontal scrollbar to the QTableWidget
        self.tableWidget.setHorizontalScrollBar(self.horizontalScrollBar)

        # Set the vertical scrollbar to the QTableWidget
        self.tableWidget.setVerticalScrollBar(self.verticalScrollBar)
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将数据库的信息显示QTableWidget,你需要先连接到数据库查询数据,然后将数据填充到QTableWidget。 以下是一个简单的示例代码,可以将数据库的所有信息显示QTableWidget: ```python import sys from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem from PyQt5.QtSql import QSqlDatabase, QSqlQuery # 连接到数据库 db = QSqlDatabase.addDatabase('QMYSQL') db.setHostName('localhost') db.setDatabaseName('test') db.setUserName('root') db.setPassword('password') if not db.open(): print("Cannot establish a database connection") sys.exit(1) # 查询数据 query = QSqlQuery() query.exec_("SELECT * FROM student") # 创建QTableWidget并设置列数和行数 table = QTableWidget() table.setColumnCount(query.record().count()) table.setRowCount(query.size()) # 填充数据 row = 0 while query.next(): for column in range(query.record().count()): item = QTableWidgetItem(str(query.value(column))) table.setItem(row, column, item) row += 1 # 显示QTableWidget table.show() # 关闭数据库连接 db.close() ``` 在这个示例,我们首先连接到MySQL数据库,然后查询了一个名为"student"的表的所有数据。然后,我们创建了一个QTableWidget,设置了列数和行数,然后使用一个循环将每个查询结果的值填充到表。 最后,我们显示了这个QTableWidget,并关闭了数据库连接。 请注意,这只是一个简单的示例,你需要根据自己的需求进行修改和定制化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值