当前位置: 首页 > 后端技术 > Python

PyQt5小工具:Excel数据分组汇总...

时间:2023-03-25 23:46:42 Python

编写数据汇总分组工具之前整理一下需求。要求一:能够以列表形式展示excel数据。需求2:支持按列汇总数据,支持对多列进行分组汇总。要求三:能够预览分组汇总后的数据,并最终将分组汇总后的数据保存到新建的excel数据文件中。【阅读全文】完整源码的获取方式在文末,需要的可以自行下载使用。主要使用的第三方python模块如下。与以往的PyQt5应用不同的是这次增加了一个样式模块qdarkstyle。通过在最后直接将这个模块添加到QApplication中,可以显示为一个黑色炫酷的应用程序。我个人喜欢这种风格...'''应用程序操作库'''importsysimportos'''应用程序样式库'''fromqdarkstyleimportload_stylesheet_pyqt5'''UI界面库'''fromPyQt5.QtWidgetsimport*fromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*'''数据提取库'''importpandasaspd编写UI界面组件布局,UI布局函数init_ui()。下面贴出init_ui()函数的整体内容,大家可以随意使用。definit_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('data')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(真)on()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)自我。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源数据。defdata_source_btn_click(self):xlsx_file=QFileDialog.getOpenFileName(self,'SelectFile',self.cwd,'ExcelFile(*.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数据。defsave_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,预览分组汇总数据.defview_data_btn_click(self):columns=self.data_group_column_text.text().strip()column_list=[]ifcolumns!='':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,存储文件选择。defsave_dir_btn_click(self):save_path=QFileDialog.getExistingDirectory(self,'selectfolder',self.cwd)self.save_dir_text.setText(save_path+'/')最后,一个QTableView组件的自定义模型TableModelView不会被共享这里由于空间限制。你可以到公众号下载源码。【福利】在公众号“Excel数据分组聚合器”内回复,获取完整源码。【往期精选】●例外:存储MYSQL转义数据,保证数据存储的准确性...●做一个小闹钟,按计划做事...●使用pyqt5的日期控件做一个小日历,用于轻松观看...●将数万张图片组合成一张图片,制作出超棒的马赛克图片!●mp3音频格式批量转wav格式的小工具●直接使用pywebio模块实现不用H5的网页●python回调函数可以做什么?●解决pyinstaller打包过程中无法加载外部资源的问题...●如何在控制台实现一个数据管理系统(包括对MYSQL数据库的增删改查)●pyqt5做了一个二维码生成器,已经打包成exe。执行程序...●自制文档格式转换器,支持.txt/.xlsx/.csv格式转换...●PyPDF2如何实现根据PDF页码提取并保存为PDF文件?●PyQt5GUI:百度图片下载器(文末附源码)●浪漫乌龟,送给程序员自己的圣诞树!