PyQt5 小工具:Excel数据分组汇总器...
2022/1/13 13:03:46
本文主要是介绍PyQt5 小工具:Excel数据分组汇总器...,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在写数据汇总分组工具之前梳理一下需求,要求一:能够将excel的数据展示到列表中。要求二:能够支持按列汇总数据,并且多列分组汇总。要求三:能够预览分组汇总以后的数据,最后将分好组汇总的数据保存到新的excel数据文件中。
完整源代码的获取方式放在文末了,有需要的可以自行下载使用。
主要使用到第三方python模块有下面这些,和前面几个 PyQt5 应用不同的是这次增加了一个样式模块 qdarkstyle ,通过最后将这个模块直接加入到 QApplication 中就可以显示成黑色酷酷的应用了。这个样式我个人是比较喜欢的…
'''应用操作库''' import sys import 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数据分组汇总器...的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南