pip install openpyxl
openpyxl-3.1.2-py2.py3-none-any.whl (249 kB)
et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)
摘要:A Python library to read/write Excel 2010 xlsx/xlsm files
pip install pyqt5;
pip install pyqt5-tools;
编写 openpyxl_pyqt5.py 如下
- # -*- coding: utf-8 -*-
- import os
- import sys
- from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox
- from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem
- from openpyxl import load_workbook
-
- class ExcelReader(QMainWindow):
- def __init__(self):
- super().__init__()
-
- # 设置窗口属性
- self.setWindowTitle("Excel Reader")
- self.setGeometry(100, 100, 800, 600)
-
- # 选择.xlsx文件名
- file_name, _ = QFileDialog.getOpenFileName(self, "Open Excel File", "", "xlsx Files (*.xlsx)")
- if file_name:
- self.file_path = file_name
- else:
- sys.exit(1)
- if not os.path.exists(self.file_path):
- print(f'Error: {self.file_path} not found.')
- sys.exit(2)
-
- # 加载Excel文件
- book = load_workbook(filename=self.file_path)
- sheet = book.active
- nrows = sheet.max_row # 取最大行数
- ncols = sheet.max_column # 取最大列数
- if ncols > 26:
- print(f" columns: {ncols} > 26 !")
- ncols = 26
-
- # 创建表格控件
- self.table = QTableWidget()
- self.table.setRowCount(nrows) # 设置行数
- self.table.setColumnCount(ncols) # 设置列数
- headers = tuple("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- self.table.setHorizontalHeaderLabels(headers[0:ncols])
- self.setCentralWidget(self.table)
-
- # 遍历Excel数据并插入到表格控件中
- row = 0
- for row_data in sheet.iter_rows():
- col = 0
- for cell in row_data:
- v = cell.value
- t = cell.data_type
- if v is None:
- item = QTableWidgetItem('')
- elif t in ('s','t'): # str, text
- item = QTableWidgetItem(v)
- elif t =='n': # number
- if v%1 ==0: # int
- item = QTableWidgetItem("%d" %v)
- else: # float
- item = QTableWidgetItem("%.4f" %v)
- elif t =='d': # date
- item = QTableWidgetItem(v.strftime('%Y-%m-%d'))
- else:
- item = QTableWidgetItem(str(v))
- self.table.setItem(row, col, item)
- col += 1
- row += 1
- #
-
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- reader = ExcelReader()
- reader.show()
- sys.exit(app.exec_())
运行 python openpyxl_pyqt5.py