在写数据汇总分组工具之前梳理一下需求,要求一:能够将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,由于篇幅问题这里就不分享了,大家可以去公众号下载源码。

【福利】公众号内回复 "Excel数据分组汇总器",获取完整源代码。

【往期精选】

● 异常:存储MYSQL转义数据保证数据存储的准确性...

● 做一个小闹钟,按规划做事...

● 使用pyqt5的日期控件做一个小日历方便查看...

● 将几万张图片合成一张图片,制作一个超赞的马赛克图!

● 小工具批量将mp3音频格式转换为wav格式

● 不用H5,直接使用pywebio模块实现网页

● python回调函数能做什么?

● 解决pyinstaller打包过程中外部资源无法加载的问题 ...

● 如何在控制台实现一个数据管理系统(包括MYSQL数据库的增删改查)

● pyqt5做了一个二维码生成器,已打包成exe可执行程序...

● 自制文档格式转换器,支持 .txt/.xlsx/.csv格式转换...

● PyPDF2如何实现按照PDF页码提取后并另存为PDF格式文件?

● PyQt5 GUI:百度图片下载器(文末附源码)

● 浪漫的turtle,送给程序员自己的圣诞树!

PyQt5 小工具:Excel数据分组汇总器...相关推荐

  1. Excel 特殊分组汇总示例

    在 Excel 中分析数据时,往往会用到数据透视表.通过透视表,可以对数据从不同维度.不同类别来汇总和分析.但是透视表功能很简单,分组依据也很固化.需要将部分数据合并.分区间或者允许重复的特殊条件来分 ...

  2. colorpix取色小工具_Python版的取色器

    大家好,好久没有更新,希望不要把我忘了啊,前几天工作中遇到一个小困难,我想去取一个图片某个区域的色值需要用一下,但是真的不知用什么工具,然后把图片发给同事,用他电脑上的PS查看了一下,感觉工作中没有一 ...

  3. Oracle导入excel数据方法汇总

    摘要:在程序编制过程和数据汇总交换过程中,经常会碰到需要将其他人员在office办公环境下编制的文件数据内容导入oracle中的情况.目前程序开发者经常使用的方法有如下几种:1,使用oracle提供的 ...

  4. python中excel数据分组处理

    1.场景描述 因文本相似性热度统计(python版)需求中要根据故障类型进行分组统计,需要对excel进行分组后再分词统计,简单记录下,有需要的朋友可以直接拿走,不客气! 2.解决方案 采用panda ...

  5. pandas访问分组里面的数据_实战用pandas+PyQt5制作一款数据分组透视处理工具

    早起导读:pandas是Python数据处理的利器,如果每天都要使用pandas执行同样的操作,如何制作一个有界面的软件更高效的完成?本文提供了一种基于PyQt5的实现思路. 关键词:pandas P ...

  6. 如何自动按名字抽取多个 Excel 数据后汇总到一起

    例题描述 某文件目录里有多个企业资产负债表,其中一个如下图所示: 现在需要从这些资产负债表中提取某些数据进行财务分析,目标表如下图所示: 第1列是需要提取的数据名称,各资产负债表中的数据分别依次提取到 ...

  7. Python | Excel数据分组求和

    在做数学建模比赛中遇到的一个小问题. 已知一个大量离散的数据的excel表,为了简化计算,我们需要将同列项相加. 如下图所示(注意,这里的数据量多达2万行,肯定不能手工计算) 因此,我们利用pytho ...

  8. java xlsx怎么转换成excel格式_python小工具 | Excel的xls和xlsx格式文件转换

    众所周知Excel文件格式转换可以通过"另存为"的方式转换格式,可以说是简单方便,但是对于大量文件转换或者经常重复进行转换操作时,这种方法就很不方便. 显然利用程序对xls和xls ...

  9. python win32选取文件夹_python小工具 | Excel的xls和xlsx格式文件转换

    众所周知Excel文件格式转换可以通过"另存为"的方式转换格式,可以说是简单方便,但是对于大量文件转换或者经常重复进行转换操作时,这种方法就很不方便. 显然利用程序对xls和xls ...

  10. 在Unity上编写一个小工具--Excel导出Json

    这是个Excel导出Json的工具类,需要放进Editor文件夹里,之后就可以在菜单上点击导出了 这个工具运行需要一个插件----NPOI,这个是用来读取excel文件的,这个插件的dll文件可以去网 ...

最新文章

  1. Charles是mac的iddler抓包工具
  2. java加密解密与数字证书的操作
  3. 模板—扩展GCD*2
  4. 通过hibernate去调用存储过程
  5. ubuntu 关机重启
  6. 牛客小白月赛13-H(单调栈+树状数组)
  7. Spring源码分析-从源码看BeanFactory和FactoryBean的区别
  8. strategy dynamic参数的使用
  9. 打开*.HLP时,系统提示*.hlp是为此Windows版本不支持的语言创建的的解决方法!
  10. AI 人工智能学习之微积分
  11. 我的开源GIS解决方案之路
  12. 深入理解Flash Player的安全域(Security Domains)
  13. WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK
  14. 开源OCR文字识别软件Calamari
  15. css好看常用的中文字体
  16. V语言(Vlang) 操作mysql数据库返回map数组
  17. 赤峰中考计算机考试软件,赤峰市2018中考信息测试题单项选择部分-初三信息技术试卷与试题.pdf...
  18. CNN系列:GoogleNet:深入卷积架构(Going Deeper with Convolutions)
  19. 什么是面向接口编程、面向过程编程、面向对象编程?
  20. 支付系统设计四:轮询扣款设计04-整体设计

热门文章

  1. Unity3D 游戏摄像机的环绕与拉近
  2. 我理解的myisam引擎之六 MYI、MYD文件的解析
  3. 机器学习5——决策树
  4. 在线LaTeX公式编辑器(备忘)
  5. if 语句嵌套注意事项1
  6. 无线网络监控服务器怎么,无线监控系统如何安装?
  7. YOLOX安装部署使用训练教程以及报错
  8. activiti工作流数据库表详细说明
  9. 百度网盘/U盘,上传文件时提示超过4G限制如何解决
  10. 阿里云申请域名及域名配置https