纳速健身

标题: 使用pyqt5展示excel的数据到桌面,并获取选中的数据内容 [打印本页]

作者: awagink    时间: 2021-1-3 22:31
标题: 使用pyqt5展示excel的数据到桌面,并获取选中的数据内容
  1. from PyQt5 import QtCore, QtGui, QtWidgets

  2. from PyQt5.QtGui import QIcon

  3. from PyQt5.QtWidgets import *

  4. from PyQt5.QtCore import *

  5. import pandas as pd

  6. import numpy as np





  7. class Ui_MainWindow(QMainWindow):



  8.     def __init__(self):

  9.         super(QtWidgets.QMainWindow, self).__init__()

  10.         self.setupUi(self)

  11.         self.retranslateUi(self)





  12.     def setupUi(self, MainWindow):

  13.         MainWindow.setObjectName("MainWindow")

  14.         MainWindow.resize(666, 488)

  15.         self.centralWidget = QtWidgets.QWidget(MainWindow)

  16.         self.centralWidget.setObjectName("centralWidget")

  17.         self.retranslateUi(MainWindow)



  18.         self.tableWidget = QtWidgets.QTableWidget(self.centralWidget)

  19.         self.tableWidget.setGeometry(QtCore.QRect(0, 60, 813, 371))

  20.         self.tableWidget.setObjectName("tableWidget")

  21.         self.tableWidget.setColumnCount(0)

  22.         self.tableWidget.setRowCount(0)

  23.         self.tableWidget.setStyleSheet("selection-background-color:pink")

  24.         self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)

  25.         self.tableWidget.setSelectionBehavior(QTableWidget.SelectRows)



  26.         self.tableWidget.raise_()



  27.         # 设置图标





  28.         self.pushButton = QtWidgets.QPushButton(self.centralWidget)

  29.         self.pushButton.setGeometry(QtCore.QRect(90, 20, 75, 23))

  30.         self.pushButton.setObjectName("pushButton")

  31.         self.pushButton.setText("打开")

  32.         MainWindow.setCentralWidget(self.centralWidget)

  33.         QtCore.QMetaObject.connectSlotsByName(MainWindow)



  34.         self.pushButton.clicked.connect(self.openfile)

  35.         self.pushButton.clicked.connect(self.creat_table_show)



  36.         # 确定

  37.         self.okButton = QtWidgets.QPushButton(self.centralWidget)

  38.         self.okButton.setGeometry(QtCore.QRect(180, 20, 75, 23))

  39.         self.okButton.setObjectName("okButton")

  40.         self.okButton.setText("确定")

  41.         MainWindow.setCentralWidget(self.centralWidget)

  42.         QtCore.QMetaObject.connectSlotsByName(MainWindow)



  43.         self.okButton.clicked.connect(self.get_select)





  44.     def retranslateUi(self, MainWindow):

  45.         _translate = QtCore.QCoreApplication.translate

  46.         MainWindow.setWindowTitle(_translate("MainWindow", "测试数据"))

  47.         MainWindow.setWindowIcon(QIcon("./head.jpg"))

  48.         # MainWindow.show()





  49.     def get_select(self):

  50.         # print(self.tableWidget.columnCount()) # 返回列数

  51.         # print(self.tableWidget.rowCount())  # 返回行数



  52.         colomn = self.tableWidget.columnCount()

  53.         row_list = set()

  54.         for i in self.tableWidget.selectionModel().selection().indexes():

  55.             row_list.add(i.row())

  56.         # print(row_list)

  57.         select_data = []

  58.         for row in row_list:

  59.             row_data = [self.tableWidget.item(row, p).text() for p in range(colomn)]

  60.             select_data.append(row_data)

  61.         print(select_data)





  62.     def openfile(self):



  63.         # 获取路径

  64.         openfile_name = QFileDialog.getOpenFileName(self, '选择文件', '', 'Excel files(*.xlsx , *.xls)')



  65.         #print(openfile_name)

  66.         global path_openfile_name

  67.         path_openfile_name = openfile_name[0]





  68.     def creat_table_show(self):

  69.         # 读取表格,转换表格

  70.         if len(path_openfile_name) > 0:

  71.             input_table = pd.read_excel(path_openfile_name)

  72.             # print(1,input_table)

  73.             input_table_rows = input_table.shape[0]

  74.             input_table_colunms = input_table.shape[1]

  75.             # print(2,input_table_rows)

  76.             # print(3,input_table_colunms)

  77.             input_table_header = input_table.columns.values.tolist()

  78.             #print(input_table_header)



  79.             #读取表格,转换表格,给tablewidget设置行列表头



  80.             self.tableWidget.setColumnCount(input_table_colunms)

  81.             self.tableWidget.setRowCount(input_table_rows)

  82.             self.tableWidget.setHorizontalHeaderLabels(input_table_header)



  83.             #给tablewidget设置行列表头



  84.             #遍历表格每个元素,同时添加到tablewidget中

  85.             for i in range(input_table_rows):

  86.                 input_table_rows_values = input_table.iloc[[i]]

  87.                 #print(input_table_rows_values)

  88.                 input_table_rows_values_array = np.array(input_table_rows_values)

  89.                 input_table_rows_values_list = input_table_rows_values_array.tolist()[0]

  90.                  #print(input_table_rows_values_list)

  91.                 for j in range(input_table_colunms):

  92.                     input_table_items_list = input_table_rows_values_list[j]

  93.                     #print(input_table_items_list)

  94.                     # print(type(input_table_items_list))



  95.                     #将遍历的元素添加到tablewidget中并显示



  96.                     input_table_items = str(input_table_items_list)

  97.                     newItem = QTableWidgetItem(input_table_items)

  98.                     newItem.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

  99.                     self.tableWidget.setItem(i, j, newItem)



  100.         #遍历表格每个元素,同时添加到tablewidget中

  101.         else:

  102.             self.centralWidget.show()



  103. if __name__ == "__main__":

  104.     import sys

  105.     app = QtWidgets.QApplication(sys.argv)

  106.     MainWindow = QtWidgets.QMainWindow()

  107.     ui = Ui_MainWindow()

  108.     ui.setupUi(MainWindow)

  109.     MainWindow.show()

  110.     sys.exit(app.exec_())
复制代码







欢迎光临 纳速健身 (https://www.nasue.com/) Powered by Discuz! X3.4