zoukankan      html  css  js  c++  java
  • PySide6读取EXCLE文档

    https://www.jb51.net/article/164615.htm 课外URL
    
    http://darrending.com/2016/07/11/qt%E8%AE%BE%E8%AE%A1%E5%8F%AF%E8%87%AA%E9%80%82%E5%BA%94%E7%9A%84%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2%EF%BC%88qt-designer%E7%AF%87%EF%BC%89/
    
    https://www.jb51.net/article/167015.htm
    
    课外URL

    1、新建一个run.py(要运行的文件),代码如下

    # -*- coding: utf-8 -*-
    """
    文件名称:  run.py
    文件创建时间:  2021/8/10 11:08
    软件名称:   PyCharm
    文件作者:  黄氏
    """
    import sys
    
    from PySide6 import QtCore
    from PySide6.QtWidgets import QApplication
    import pandas as mypd
    
    # 导入所画的界面
    from  tabledemo import *
    
    # 自定义类
    class Excel_Table(QMainWindow, Ui_MainWindow):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
    
            self.excelButton.clicked.connect(self.Open_Excel_File) # connect作用就是执行某个函数
            self.saveButton.clicked.connect(self.Excel_Save)
    
        def Open_Excel_File(self):
            excel_name = QFileDialog.getOpenFileName(self, '选择文件', '', 'Excel files(*.xlsx)')   # 过滤出xlsx格式的文件
            self.path_excel_name = excel_name[0]
            print("Excel文档的路径: ", self.path_excel_name)
            if len(self.path_excel_name) > 0:
                self.Read_Excel_Data()
                self.Table_Initialize()
    
        # 读取 EXCEL 文档的数据
        def Read_Excel_Data(self):
            self.excel_file = mypd.read_excel(self.path_excel_name)
            # 获取数据的行标签与列标签
            self.columns = self.excel_file.columns
            self.rows = self.excel_file.index
    
        # 定义表格的初始化参数
        def Table_Initialize(self):
            self.tableWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
            self.tableWidget.setRowCount(len(self.rows))    # 设置表格的行数
            self.tableWidget.setColumnCount(len(self.columns))  # 设置表格的列数
            self.tableWidget.setHorizontalHeaderLabels(self.columns) # 设置表格的列标签
            self.tableWidget.setGeometry(QtCore.QRect(223,120,1000,800)) # 重新设置表格区域的大小
            # 将 EXCEL 文档的数据显示在表格中
            for i in range(len(self.rows)):
                for j in range(len(self.columns)):
                    tstr = str(self.excel_file.iloc[i][j])
                    data = QTableWidgetItem(tstr)
                    self.tableWidget.setItem(i, j, data)
    
            self.tableWidget.resizeColumnsToContents() # 列宽随着内容调整
            self.tableWidget.resizeRowsToContents() # 行宽随着内容调整
            self.tableWidget.setAlternatingRowColors(True)  # 表格的颜色交错显示
            self.tableWidget.itemChanged.connect(self.Table_Data_Change) # 将表格中单元格改变时,触发 Table_Data_Change 事件
    
        # 当表格的内容改变时获取内容
        def Table_Data_Change(self,item):
            text = item.text()
            itemrow = item.row()
            itemcol = item.column()
            self.excel_file.iloc[itemrow,itemcol] = text # 使用[i][j]形式会报销
    def Excel_Save(self): self.excel_file.to_excel(self.path_excel_name, index=False) if __name__ == '__main__': app = QApplication(sys.argv) excelTable = Excel_Table() excelTable.show() sys.exit(app.exec())

    2、新建一个ui的python文档,文件 tabledemo.py 代码如下(我是用QtDesigner设计,通过PyUIC命令转换过来的)

    # -*- coding: utf-8 -*-
    
    ################################################################################
    ## Form generated from reading UI file 'tabledemo.ui'
    ##
    ## Created by: Qt User Interface Compiler version 6.1.2
    ##
    ## WARNING! All changes made in this file will be lost when recompiling UI file!
    ################################################################################
    
    from PySide6.QtCore import *  # type: ignore
    from PySide6.QtGui import *  # type: ignore
    from PySide6.QtWidgets import *  # type: ignore
    
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            if not MainWindow.objectName():
                MainWindow.setObjectName(u"MainWindow")
            MainWindow.resize(918, 538)
            sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
            MainWindow.setSizePolicy(sizePolicy)
            MainWindow.setLayoutDirection(Qt.LeftToRight)
            self.centralwidget = QWidget(MainWindow)
            self.centralwidget.setObjectName(u"centralwidget")
            self.formLayout = QFormLayout(self.centralwidget)
            self.formLayout.setObjectName(u"formLayout")
            self.horizontalLayout = QHBoxLayout()
            self.horizontalLayout.setObjectName(u"horizontalLayout")
            self.excelButton = QPushButton(self.centralwidget)
            self.excelButton.setObjectName(u"excelButton")
    
            self.horizontalLayout.addWidget(self.excelButton)
    
            self.horizontalSpacer = QSpacerItem(808, 17, QSizePolicy.Expanding, QSizePolicy.Minimum)
    
            self.horizontalLayout.addItem(self.horizontalSpacer)
    
    
            self.formLayout.setLayout(0, QFormLayout.LabelRole, self.horizontalLayout)
    
            self.horizontalLayout_2 = QHBoxLayout()
            self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
            self.horizontalSpacer_2 = QSpacerItem(828, 18, QSizePolicy.Expanding, QSizePolicy.Minimum)
    
            self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
    
            self.saveButton = QPushButton(self.centralwidget)
            self.saveButton.setObjectName(u"saveButton")
            sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            sizePolicy1.setHorizontalStretch(0)
            sizePolicy1.setVerticalStretch(0)
            sizePolicy1.setHeightForWidth(self.saveButton.sizePolicy().hasHeightForWidth())
            self.saveButton.setSizePolicy(sizePolicy1)
            self.saveButton.setContextMenuPolicy(Qt.DefaultContextMenu)
            self.saveButton.setLayoutDirection(Qt.LeftToRight)
    
            self.horizontalLayout_2.addWidget(self.saveButton)
    
    
            self.formLayout.setLayout(2, QFormLayout.LabelRole, self.horizontalLayout_2)
    
            self.tableWidget = QTableWidget(self.centralwidget)
            self.tableWidget.setObjectName(u"tableWidget")
            self.tableWidget.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
    
            self.formLayout.setWidget(1, QFormLayout.SpanningRole, self.tableWidget)
    
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QMenuBar(MainWindow)
            self.menubar.setObjectName(u"menubar")
            self.menubar.setGeometry(QRect(0, 0, 918, 22))
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QStatusBar(MainWindow)
            self.statusbar.setObjectName(u"statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
    
            QMetaObject.connectSlotsByName(MainWindow)
        # setupUi
    
        def retranslateUi(self, MainWindow):
            MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
            self.excelButton.setText(QCoreApplication.translate("MainWindow", u"u6253u5f00Excel", None))
            self.saveButton.setText(QCoreApplication.translate("MainWindow", u"u4fdd u5b58", None))
        # retranslateUi
  • 相关阅读:
    【已解决】allure空白页 报错 Uncaught TypeError: P.a.registerLanguage is not a function,Uncaught ReferenceError: allure is not defined问题解决方法
    【转】SQLServer查询死锁
    opencv-Mask(掩膜)
    opencv-cvtColor图像制式转换
    opencv-saturate_cast防溢出函数
    opencv-convertTo转换数据格式
    opencv-imwrite保存函数
    opencv-imshow显示函数
    opencv-setTo设置值
    我的蓝牙设备
  • 原文地址:https://www.cnblogs.com/yimai-series/p/15129042.html
Copyright © 2011-2022 走看看