在写数据汇总分组⼯具之前梳理⼀下需求,要求⼀:能够将excel的数据展⽰到列表中。要求⼆:能够⽀持按列汇总数据,并且多列分组汇总。要求三:能够预览分组汇总以后的数据,最后将分好组汇总的数据保存到新的excel数据⽂件中。
主要使⽤到第三⽅python模块有下⾯这些,和前⾯⼏个 PyQt5 应⽤不同的是这次增加了⼀个样式模块 qdarkstyle ,通过最后将这个模块直接加⼊到 QApplication 中就可以显⽰成⿊⾊酷酷的应⽤了。这个样式我个⼈是⽐较喜欢的...
'''应⽤操作库'''import sysimport os
'''应⽤样式库'''
from qdarkstyle import load_stylesheet_pyqt5'''UI界⾯库'''
from PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.QtGui import *'''数据提取库'''
import pandas as pd
编写 UI 界⾯组件布局,UI 布局函数 init_ui()。init_ui() 的函数整体内容都贴在下⾯这⾥,⼤佬们可以根据⾃⼰的需要随意发挥。
def init_ui(self):
# 标题、图标设置
self.setWindowTitle('Excel数据汇总⼯具 公众号:[Python 集中营]') self.setWindowIcon(QIcon(':/data_sum.ico')) # 初始化⽔平布局
hbox = QHBoxLayout() # 初始化栅格布局 grid = QGridLayout()
self.data_source_text = QLineEdit()
self.data_source_text.setReadOnly(True)
self.data_source_btn = QPushButton() self.data_source_btn.setText('数据')
self.data_source_btn.clicked.connect(self.data_source_btn_click) self.data_group_column = QLabel()
self.data_group_column.setText('设置分组列')
self.data_group_column_text = QLineEdit()
self.data_group_column_text.setPlaceholderText('列名1,列名2...') self.save_dir_text = QLineEdit()
self.save_dir_text.setReadOnly(True)
self.save_dir_btn = QPushButton() self.save_dir_btn.setText('路径')
self.save_dir_btn.clicked.connect(self.save_dir_btn_click) self.view_data_btn = QPushButton() self.view_data_btn.setText('预览数据')
self.view_data_btn.clicked.connect(self.view_data_btn_click) self.save_data_btn = QPushButton() self.save_data_btn.setText('保存')
self.save_data_btn.clicked.connect(self.save_data_btn_click) grid.addWidget(self.data_source_text, 0, 0, 1, 2) grid.addWidget(self.data_source_btn, 0, 2, 1, 1) grid.addWidget(self.data_group_column, 1, 0, 1, 1)
grid.addWidget(self.data_group_column_text, 1, 1, 1, 2) grid.addWidget(self.save_dir_text, 2, 0, 1, 2) grid.addWidget(self.save_dir_btn, 2, 2, 1, 1)
grid.addWidget(self.view_data_btn, 3, 0, 1, 2) grid.addWidget(self.save_data_btn, 3, 2, 1, 1) self.table_view = QTableView() self.table_view.setFixedWidth(500) self.table_view.setFixedHeight(100) hbox.addWidget(self.table_view) hbox.addLayout(grid) self.setLayout(hbox)
槽函数总共使⽤了四个,分别是下⾯这些。
save_data_btn_click:将分组汇总后的 DataFrame 数据直接保存。
data_source_btn_click:⽤来加载需要分组汇总的 excel ⽂件的,并将加载出来的 DataFrame 数据直接显⽰到 QTableView的组件上⾯,这样可以实时的看见加载进来的原始数据。
save_dir_btn_click:点击选择存储路径时触发的槽函数,⽤来调起 QFileDialog 来选择⽂件路径。view_data_btn_click:调起预览分组汇总后的数据,将分组后的数据显⽰到窗⼝上。槽函数 data_source_btn_click,加载 excel 源数据。
def data_source_btn_click(self):
xlsx_file = QFileDialog.getOpenFileName(self, '选择⽂件', self.cwd, 'Excel File(*.xlsx)') self.data_source_text.setText(xlsx_file[0])
self.data_frame = pd.read_excel(self.data_source_text.text().strip()) print(self.data_frame)
model = TableModelView(self.data_frame) self.table_view.setModel(model)
槽函数 save_data_btn_click,保存最终的 excel 数据。
def save_data_btn_click(self):
dir = self.save_dir_text.text().strip()
self.data_frame_group.to_excel(dir + 'group_data.xlsx',sheet_name='数据信息汇总')
槽函数 view_data_btn_click,预览分组汇总的数据。
def view_data_btn_click(self):
columns = self.data_group_column_text.text().strip() column_list = [] if columns != '':
column_list = columns.split(',')
self.data_frame_group = self.data_frame.groupby(column_list, as_index=False).sum() print(self.data_frame_group)
model = TableModelView(self.data_frame_group) self.table_view.setModel(model)
槽函数 save_dir_btn_click,存储⽂件选择。
def save_dir_btn_click(self):
save_path = QFileDialog.getExistingDirectory(self, '选择⽂件夹', self.cwd) self.save_dir_text.setText(save_path + '/')
最后,在主要代码块中展⽰列表数据时时使⽤了⼀个 QTableView 组件⾃定义的模型 TableModelView。
到此这篇关于基于PyQt5制作Excel数据分组汇总器的⽂章就介绍到这了,更多相关PyQt5 Excel数据分组汇总器内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
因篇幅问题不能全部显示,请点此查看更多更全内容