Pyqt应用相关之与Excel的联接

news/2024/5/3 12:20:42/文章来源:https://blog.csdn.net/yyfloveqcw/article/details/130264183

        利用所学相关Pyqt实现对于Excel文件内部数据的处理,首先需要获取Excel的数据,在获取后进行保存处理即可完成相应的操作。

    def save_data_btn_click(self):dir = self.save_dir_text.text().strip()self.data_frame_group.to_excel(dir + 'output.xlsx',sheet_name='datasum')

这是一个Python函数,名为save_data_btn_click,它的作用是保存数据到指定的文件中。该函数接受两个参数:self是一个pandas数据框对象,用于保存数据;dir是一个字符串,用于指定保存文件的路径。

在函数中,首先通过self.save_dir_text.text().strip()获取保存文件的路径,然后使用self.data_frame_group.to_excel(dir + 'output.xlsx',sheet_name='datasum')将数据框保存到指定的文件中。

需要注意的是,在使用pandas库时,需要先安装该库,并将其添加到Python的模块搜索路径中。

 

    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)

这是一个Python函数,名为view_data_btn_click,它的作用是显示数据框中的数据。该函数接受两个参数:self是一个pandas数据框对象,用于显示数据;columns是一个字符串,用于指定要显示的列名。

在函数中,首先通过self.data_group_column_text.text().strip()获取要显示的列名,然后使用self.data_frame_group.groupby(column_list, as_index=False).sum()将数据框按列名分组,并使用print(self.data_frame_group)打印分组后的数据。

接着,创建一个TableModelView对象,并将分组后的数据框作为参数传入。最后,使用self.table_view.setModel(model)TableModelView对象设置为数据框的模型。

 

    def save_dir_btn_click(self):save_path = QFileDialog.getExistingDirectory(self, 'chooselab', self.cwd)self.save_dir_text.setText(save_path + '/')

这是一个Python函数,名为save_dir_btn_click,它的作用是从用户那里获取保存文件的目录路径,并将其保存到一个字符串变量中。该函数接受两个参数:self是一个QFileDialog对象,用于获取用户选择的目录路径;save_path是一个字符串变量,用于保存用户选择的目录路径。

在函数中,首先使用QFileDialog.getExistingDirectory()方法获取用户选择的目录路径,并将其保存到save_path变量中。然后,将save_path变量设置为QFileDialog.getExistingDirectory()方法的返回值,以便在下次调用该函数时能够获取用户选择的目录路径。

 

    def data_source_btn_click(self):xlsx_file = QFileDialog.getOpenFileName(self, 'choosetxt', 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)

这是一个Python函数,名为data_source_btn_click,它的作用是从用户那里获取Excel文件的文件名,并将其保存到一个字符串变量中。该函数接受两个参数:self是一个QFileDialog对象,用于获取用户选择的文件路径;xlsx_file是一个字符串变量,用于保存用户选择的文件路径。

在函数中,首先使用QFileDialog.getOpenFileName()方法获取用户选择的文件路径,并将其保存到xlsx_file变量中。然后,将xlsx_file变量设置为QFileDialog.getOpenFileName()方法的返回值,以便在下次调用该函数时能够获取用户选择的文件路径。

接着,使用pd.read_excel()方法读取Excel文件,并将其保存到self.data_frame变量中。最后,创建一个TableModelView对象,并将self.data_frame变量作为参数传入。最后,使用self.table_view.setModel(model)TableModelView对象设置为数据框的模型。

汇总:

import sys
import os
from qdarkstyle import load_stylesheet_pyqt5
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import pandas as pdclass TableModelView(QAbstractTableModel):def __init__(self, data):QAbstractTableModel.__init__(self)self._data = datadef rowCount(self, parent=None):return self._data.shape[0]def columnCount(self, parent=None):return self._data.shape[1]def data(self, index, role=Qt.DisplayRole):if index.isValid():if role == Qt.DisplayRole:return str(self._data.iloc[index.row(), index.column()])return Nonedef headerData(self, col, orientation, role):if orientation == Qt.Horizontal and role == Qt.DisplayRole:return self._data.columns[col]return Noneclass DataGroupSum(QWidget):def __init__(self):super(DataGroupSum, self).__init__()self.cwd = os.getcwd()self.init_ui()def init_ui(self):# 标题、图标设置self.setWindowTitle('Excel data lab')# 初始化水平布局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('setlab')self.data_group_column_text = QLineEdit()self.data_group_column_text.setPlaceholderText('line1,line2...')self.save_dir_text = QLineEdit()self.save_dir_text.setReadOnly(True)self.save_dir_btn = QPushButton()self.save_dir_btn.setText('road')self.save_dir_btn.clicked.connect(self.save_dir_btn_click)self.view_data_btn = QPushButton()self.view_data_btn.setText('preview')self.view_data_btn.clicked.connect(self.view_data_btn_click)self.save_data_btn = QPushButton()self.save_data_btn.setText('save')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(400)hbox.addWidget(self.table_view)hbox.addLayout(grid)self.setLayout(hbox)def data_source_btn_click(self):xlsx_file = QFileDialog.getOpenFileName(self, 'choosetxt', 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)def save_dir_btn_click(self):save_path = QFileDialog.getExistingDirectory(self, 'chooselab', self.cwd)self.save_dir_text.setText(save_path + '/')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)def save_data_btn_click(self):dir = self.save_dir_text.text().strip()self.data_frame_group.to_excel(dir + 'output.xlsx',sheet_name='datasum')if __name__ == '__main__':app = QApplication(sys.argv)app.setStyleSheet(load_stylesheet_pyqt5())main = DataGroupSum()main.show()sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102181.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIP之链路聚合、VRRP

链路聚合 链路聚合 --- 可以将多个物理接口绑定成一个逻辑接口,即将N条物理链路聚合为一条逻辑链路。可以在不升级硬件的条件下,达到增加带宽的效果 我们将逻辑链路,称为聚合链路,在华为设备中称为ETH-TRUNK链路(这个技…

物联网产品的开发的难点,致命点是什么?

物联网产品的开发的难点,致命点是什么? 当下是万物互联的时代, 物联网产品本身的难度因行业而异。但是物联网设备上云通信交互就成了各个行业需要首先解决的问题。 物联网通信问题从产品设计一开始,如果不能很好的解决&#xff0c…

马云上三路和下三路

马云的上三路、下三路,马云最牛搭档总结 马云刚最牛搭档:蔡崇信,关明生 《关乎天下》是关明生写的一本书 趣讲大白话:没有方法走不远 【趣讲信息科技143期】 **************************** 马云上三路:使命&#xff0c…

你掌握了stream流的全部新特性吗?

我们知道很早之前java8对于之前的版本更新了许多 新的支持,比如lamda函数式接口的支持,支持更多函数式接口的使用,对链表,数组,队列,集合等实现了Collectio接口的数据结构提供了StreamSupport.stream()支持…

基于ubuntu18.04.6 LTS服务器安装nvidia驱动

1对于一个刚刚配置的服务器,首先nvidia-smi,自然无法显示Driver Version、最高cuda版本等信息。 nvidia-smi: command not found 需要我们自己安装nvidia驱动 2禁用老驱动 禁用自带nouveau驱动 sudo vim /etc/modprobe.d/blacklist.conf 打开后在CONF文…

2023年软件测试的前景?测试工程师技能提升,进阶自动化测试...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 2023年软件测试行…

【开发日志】2023.04 ZENO----Composite----CompNormalMap

CompNormalMap 将灰度图像转换为法线贴图 将灰度图像转换为法线贴图是一种常见的技术,用于在实时图形渲染中增加表面细节。下面是一个简单的方法来将灰度图像转换为法线贴图: 加载灰度图像,并将其转换为浮点数值范围[0, 1]。 对于每个像素…

IT_开发提测标准规范

背景 公司 IT 规模小,开发提测质量差,流程不规范,导致测试任务重,于是推行 :IT_开发提测标准规范,正文如下;拟定开发提测标准规范后,测试与项目经理内部评审后,发至IT群…

盘点几款还不错的企业网盘产品

企业网盘的出现,为企业提供文件安全管理,团队协作服务,解决了便捷性与安全性等问题,受到了企业的青睐。市面上的企业网盘工具也是五花八门,我们该如何选择适合自己团队的网盘工具呢? 本文盘点了几款还不错的…

反射-Class类分析

反射相关的主要类 java.lang.Class:代表一个类,Class对象表示某个类加载后在堆中的对象java.lang.reflect.Method:代表类的方法,Method对象表示某个类的方法java.lang.reflect.Field:代表类的成员变量,Fie…

20230422 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142. 环形链表 II

1、24. 两两交换链表中的节点 初始时,cur指向虚拟头结点,然后进行如下三步: 操作之后,链表如下: 看这个可能就更直观一些了: /*** Definition for singly-linked list.* public class ListNode {* i…

Android 日志框架使用

在实际开发中,经常会遇到需要打印日志并保存到文件中,便于后面取日志分析代码运行情况,当然如果只是打印日志不需要记录文件,使用android自带的log工具就完全够了, Log打印日志会记录到系统日志中,可以取出…

Rust之泛型、特性和生命期(一):基本概念

开发环境 Windows 10Rust 1.69.0 VS Code 1.77.3 项目工程 这里继续沿用上次工程rust-demo 泛型、特性和生命期 每种编程语言都有有效处理概念重复的工具。在Rust中,一个这样的工具就是泛型:具体类型或其他属性的抽象替身。我们可以表达泛型的行为或…

CorelDRAW 2023版本更新内容及安装详细教程

这里是CorelDRAW 2023版本更新内容及安装详细教程: CorelDRAW 2023是最新更新版本,在界面和功能上做了较大提升与优化: 1. 简洁界面:采用全新设计界面,简约而不简单。菜单和工具栏进行了整合与重组,更加直观。拥有自动标记和提示,易于上手使用。 2. 全新工作空间:提供“轻量…

基于51单片机的脉搏测量仪设计与实现

目录 前言 一、设计背景 二、系统功能 三、系统硬件设计 3.1 总体方案设计 3.2 信号采集电路设计 3.3 报警电路设计 3.4 下载电路 3.5 电源电路设计 3.6 OLED显示设计 3.7 键盘电路 四、系统软件设计 4.1 系统主程序设计 4.2 脉搏采集子程序设计 4.3 键盘程序设…

正式开赛|2023年“桂林银行杯”数据建模大赛暨全国大学生数学建模竞赛广西赛区热身赛

为学习贯彻党的二十大工作报告中关于加快发展数字经济、促进数字经济和实体经济深度融合的重要指示,不断推进数字化转型与金融科技创新,桂林银行联合全国大学生数学建模竞赛广西赛区组委会、广西应用数学中心(广西大学)共同主办20…

使用EasyExcel导出模板并设置级联下拉及其原理分析

一、概述 项目中有时会遇到需要导出一个Excel模板,然后在导出的Excel中填充数据,最终再调用接口批量把Excel中的数据导入到数据库当中的需求。 其中级联下拉选择,手机号校验,性别校验等都是比较常见的校验。 这里就已上面三种情…

王道计组(23版)3_存储系统

概述 RAM:随机存储器,任一个存储单元可以随机存取,易失。用作主存(DRAM)或Cache(SRAM) ROM:只读存储器,可随机读出,写入较慢,需刷新,非易失。Flash、SSD固态硬盘、U盘 _____SSD&…

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明

🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…

arthas的简单使用

目录 arthas是什么为什么要使用arthasarthas能做什么安装arthas前提准备arthas主要命令trace命令watch命令monitor命令jad命令dashboard命令Thread命令sc命令mc命令redefine命令 实战演练1.定位到需要修改的类2.将定位到的.class文件反编译成.java文件3.修改.java文件4.将修改后…