import sys
import pandas as pd
from PyQt5.QtWidgets import QApplication, QFileDialog, QMessageBox, QTableWidgetItem, QDialog, QPushButton
from study_4 import Ui_Dialog
class ExcelReader(QDialog, Ui_Dialog):
def __init__(self):
super().__init__() # 使用超类,继承父类的属性及方法
self.setupUi(self) # 构造窗体界面
self.setWindowTitle("Table") # 设置窗体主体
self.file_path = r"C:\Users\Think\PycharmProjects\study\xkr.xlsx" # 要读取的文件路径
self.df = pd.DataFrame() # 存储表格数据
self.pushButton.clicked.connect(self.browse_file)
self.pushButton_2.clicked.connect(self.read_excel)
def browse_file(self):
"""
打开一个文件
"""
# 获取文件路径
file_name, _ = QFileDialog.getOpenFileName(self, "Open Excel File", "", "Excel Files (*.xlsx)")
if file_name:
self.file_path = file_name
self.lineEdit.setText(self.file_path)
def read_excel(self):
"""
使用Pandas读取Excel文件,并在表格部件中显示数据。
"""
if not self.file_path:
QMessageBox.critical(self, "Error", "Please select an Excel file to read.")
return
try:
self.df = pd.read_excel(self.file_path)
self.tableWidget.setRowCount(self.df.shape[0]) # 获取行数
self.tableWidget.setColumnCount(self.df.shape[1]) # 获取列数
self.tableWidget.setHorizontalHeaderLabels(self.df.columns)
for i in range(self.df.shape[0]):
for j in range(self.df.shape[1]):
self.tableWidget.setItem(i, j, QTableWidgetItem(str(self.df.iloc[i, j])))
except Exception as e:
QMessageBox.critical(self, "Error", f"An error occurred while reading the Excel file.\n\n{e}")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ExcelReader()
window.show()
sys.exit(app.exec_())
直接点击读取按钮会读取
self.file_path = r"C:\Users\Think\PycharmProjects\study\xkr.xlsx" # 要读取的文件路径
代码中设定好的文件路径
若需要读取别的excle文件,需要先点击导入,再点击读取