PyQt5 小工具 Excel資料分組彙總器

2022-09-13 06:48:11 字數 4710 閱讀 3861

在寫資料彙總分組工具之前梳理一下需求,要求一:能夠將excel的資料展示到列表中。要求二:能夠支援按列彙總資料,並且多列分組彙總。要求三:能夠預覽分組彙總以後的資料,最後將分好組彙總的資料儲存到新的excel資料檔案中。

【閱讀全文】

'''應用操作庫'''

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.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.s**e_dir_text = qlineedit()

self.s**e_dir_text.setreadonly(true)

self.s**e_dir_btn = qpushbutton()

self.s**e_dir_btn.settext('路徑')

self.s**e_dir_btn.clicked.connect(self.s**e_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.s**e_data_btn = qpushbutton()

self.s**e_data_btn.settext('儲存')

self.s**e_data_btn.clicked.connect(self.s**e_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.s**e_dir_text, 2, 0, 1, 2)

grid.addwidget(self.s**e_dir_btn, 2, 2, 1, 1)

grid.addwidget(self.view_data_btn, 3, 0, 1, 2)

grid.addwidget(self.s**e_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)

槽函式總共使用了四個,分別是下面這些。

s**e_data_btn_click:將分組彙總後的 dataframe 資料直接儲存。

data_source_btn_click:用來載入需要分組彙總的 excel 檔案的,並將載入出來的 dataframe 資料直接顯示到 qtableview 的元件上面,這樣可以實時的看見載入進來的原始資料。

s**e_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)

槽函式 s**e_data_btn_click,儲存最終的 excel 資料。

def s**e_data_btn_click(self):

dir = self.s**e_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)

槽函式 s**e_dir_btn_click,儲存檔案選擇。

def s**e_dir_btn_click(self):

s**e_path = qfiledialog.getexistingdirectory(self, '選擇資料夾', self.cwd)

【往期精選】

● 異常:儲存mysql轉義資料保證資料儲存的準確性...

● 做乙個小鬧鐘,按規劃做事...

● 使用pyqt5的日期控制項做乙個小日曆方便檢視...

● 將幾萬張合成一張,製作乙個超讚的馬賽克圖!

● 小工具批量將***音訊格式轉換為w**格式

● 不用h5,直接使用pywebio模組實現網頁

● python**函式能做什麼?

● 解決pyinstaller打包過程中外部資源無法載入的問題 ...

● 如何在控制台實現乙個資料管理系統(包括mysql資料庫的增刪改查)

● pyqt5做了乙個***生成器,已打包成exe可執行程式...

● 自製文件格式轉換器,支援 .txt/.xlsx/.csv格式轉換...

● pypdf2如何實現按照pdf頁碼提取後並另存為pdf格式檔案?

● 浪漫的turtle,送給程式設計師自己的聖誕樹!

PyQt5簡單小工具製作步驟

學了幾個月的python了,突然想做點自己的工具,想起自己以前用qt寫c 的gui的時候,記得用pyqt可以寫gui,就學了一周。把基本的東西都看了一遍,感覺和qt差不多!但是pyqt5 的中文資料少的可憐啊!如果又想學的朋友可以參考下我的這個小工具製作過程!先看 import sys from p...

基於PyQT的小工具框架

gps原始資料中經度 維度 高程資料的提取 log資料的顯示和儲存 pip install pyqt5 pip install pyqt5 tools designer1 主介面 pyuic5 o mainwindow.py mainwindow.ui2 資源檔案 pyrcc5 o mainwind...

PyQt5 GUI生成隨機生成小工具

自己修改了 實現了自動生成ssn,手機號和姓名的功能 import sysfrom pyqt5.qtgui import from pyqt5.qtwidgets import from pyqt5.qtcore import import requests from generator impor...