返回顶部

[Python] 使用pyqt5展示excel的数据到桌面,并获取选中的数据内容

[复制链接]
awagink 显示全部楼层 发表于 2021-1-3 22:31:45 |阅读模式 打印 上一主题 下一主题
  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_())
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

纳速健身网成立于2006年8月,是国内优秀健身运动网站,现拥浏览人数超30万。网站是集养生、武术、太极拳和健身气功等多种健身项目于一体的多功能交流平台。平台提供大量优质的教学视频、伴奏音乐(太极拳晨练音乐,广场舞音乐,健身气功音乐)、图文教程、运动科普和经验分享,为健身爱好者提供完善的运动指导平台。
  • 纳速QQ群乙:151815303
  • 纳速QQ群丙:79104490
  • 微信交流群:微信好友搜索【nasuwang】加小纳微信进群交流健身知识,备注【纳速】
  •                     或者扫描页面底部右侧二维码添加小纳微信>>>
  • 微信公众号

  • 微信群客服交流

  • Copyright © 2006-2021, 纳速健身网. | | 辽ICP备13002388号-1 辽公安网备21050202000005号公安网备号 纳速武术-乙 QQ