使用wxPython和pandas模块生成Excel文件

介绍:

在Python编程中,有时我们需要根据特定的数据生成Excel文件。本文将介绍如何使用wxPython和pandas模块来实现这个目标。我们将创建一个简单的GUI应用程序,允许用户选择输出文件夹和输入的Excel文件,并根据Excel文件中每个单元格的字段名组合生成多个Excel文件。
C:\pythoncode\new\genxlsbyxls.py
1. 准备工作

在开始之前,确保您已经安装了wxPython和pandas模块。如果没有安装,可以使用以下命令进行安装:

pip install wxPython
pip install pandas

2. 创建GUI窗口

首先,我们需要创建一个GUI窗口,以便用户可以选择输出文件夹和输入的Excel文件。我们将使用wxPython模块来创建窗口和按钮,并将事件与相应的回调函数关联起来。

import wx
import os
import pandas as pdclass MyFrame(wx.Frame):def __init__(self, parent, title):super(MyFrame, self).__init__(parent, title=title, size=(400, 200))panel = wx.Panel(self)self.output_dir_btn = wx.Button(panel, label="选择输出文件夹")self.Bind(wx.EVT_BUTTON, self.on_select_output_dir, self.output_dir_btn)self.input_file_btn = wx.Button(panel, label="选择Excel文件")self.Bind(wx.EVT_BUTTON, self.on_select_input_file, self.input_file_btn)self.start_btn = wx.Button(panel, label="开始生成")self.Bind(wx.EVT_BUTTON, self.on_start_generation, self.start_btn)sizer = wx.BoxSizer(wx.VERTICAL)sizer.Add(self.output_dir_btn, 0, wx.ALL|wx.EXPAND, 5)sizer.Add(self.input_file_btn, 0, wx.ALL|wx.EXPAND, 5)sizer.Add(self.start_btn, 0, wx.ALL|wx.EXPAND, 5)panel.SetSizer(sizer)def on_select_output_dir(self, event):dlg = wx.DirDialog(self, "选择输出文件夹", style=wx.DD_DEFAULT_STYLE)if dlg.ShowModal() == wx.ID_OK:self.output_dir = dlg.GetPath()print("输出文件夹:", self.output_dir)dlg.Destroy()def on_select_input_file(self, event):dlg = wx.FileDialog(self, "选择Excel文件", wildcard="Excel files (*.xlsx)|*.xlsx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)if dlg.ShowModal() == wx.ID_OK:self.input_file = dlg.GetPath()print("输入文件:", self.input_file)dlg.Destroy()def on_start_generation(self, event):if not hasattr(self, 'output_dir') or not hasattr(self, 'input_file'):wx.MessageBox("请先选择输出文件夹和Excel文件", "错误", wx.OK | wx.ICON_ERROR)returndf = pd.read_excel(self.input_file)for i, col in enumerate(df.iloc[:, 0]):column_names = col.split(',')file_name = f"{i+1}.xlsx"file_path = os.path.join(self.output_dir, file_name)df_new = pd.DataFrame(columns=column_names)df_new.to_excel(file_path, index=False)wx.MessageBox("生成完成", "提示", wx.OK | wx.ICON_INFORMATION)self.Close()app = wx.App()
frame = MyFrame(None, "Excel文件生成器")
frame.Show()
app.MainLoop()```在上述代码中,我们创建了一个`MyFrame`类,继承自wxPython的`Frame`类。该类表示我们的应用程序窗口,并包含了选择输出文件夹和选择Excel文件的按钮。**3. 实现回调函数**接下来,我们需要实现与按钮关联的回调函数。这些函数将在用户点击相应的按钮时被调用。```pythondef on_select_output_dir(self, event):dlg = wx.DirDialog(self, "选择输出文件夹", style=wx.DD_DEFAULT_STYLE)if dlg.ShowModal() == wx.ID_OK:self.output_dir = dlg.GetPath()print("输出文件夹:", self.output_dir)dlg.Destroy()def on_select_input_file(self, event):dlg = wx.FileDialog(self, "选择Excel文件", wildcard="Excel files (*.xlsx)|*.xlsx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)if dlg.ShowModal() == wx.ID_OK:self.input_file = dlg.GetPath()print("输入文件:", self.input_file)dlg.Destroy()def on_start_generation(self, event):if not hasattr(self, 'output_dir') or not hasattr(self, 'input_file'):wx.MessageBox("请先选择输出文件夹和Excel文件", "错误", wx.OK | wx.ICON_ERROR)returndf = pd.read_excel(self.input_file)for i, col in enumerate(df.iloc[:, 0]):column_names = col.split(',')file_name = f"{i+1}.xlsx"file_path = os.path.join(self.output_dir, file_name)df_new = pd.DataFrame(columns=column_names)df_new.to_excel(file_path, index=False)wx.MessageBox("生成完成", "提示", wx.OK | wx.ICON_INFORMATION)self.Close()

在上述代码中,on_select_output_dir函数用于选择输出文件夹,并将选择的路径存储在self.output_dir变量中。on_select_input_file函数类似地用于选择输入的Excel文件,并将选择的文件路径存储在self.input_file变量中。

on_start_generation函数是最重要的回调函数。它首先读取选择的Excel文件,并逐个单元格解析字段名组合。然后,根据字段名组合创建新的DataFrame,并将其保存为一个新的Excel文件,文件名为序号加上.xlsx后缀。生成的Excel文件将保存在选择的输出文件夹中。

4. 运行应用程序

最后,我们需要创建一个wx.App对象并运行应用程序的主循环。

app = wx.App()
frame = MyFrame(None, "Excel文件生成器")
frame.Show()
app.MainLoop()

这段代码创建了一个wx.App对象和一个MyFrame对象,并将应用程序的主循环交给app.MainLoop()处理。

5. 效果演示
在这里插入图片描述

在这里插入图片描述

现在,我们已经完成了整个程序的编写。运行程序后,将会出现一个GUI窗口,您可以通过点击按钮选择输出文件夹和输入的Excel文件。当您点击"开始生成"按钮后,程序将根据Excel文件中的字段名组合生成多个Excel文件,并保存在指定的输出文件夹中。

这个程序提供了一个简单而实用的方法来根据Excel文件中的字段名组合生成多个Excel文件。您可以根据自己的需求进行修改和扩展,以满足更复杂的场景。

总结:

本文介绍了如何使用wxPython和pandas模块创建一个简单的GUI应用程序,用于根据Excel文件中的字段名组合生成多个Excel文件。通过选择输出文件夹和输入的Excel文件,程序能够自动解析字段名组合,并生成对应的Excel文件。这种方法可以方便地处理大量数据,并将其保存为易于管理和使用的Excel文件。


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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络极简入门

神经网络是深度学习的基础,正是深度学习的兴起,让停滞不前的人工智能再一次的取得飞速的发展。 其实神经网络的理论由来已久,灵感来自仿生智能计算,只是以前限于硬件的计算能力,没有突出的表现,直至谷歌的A…

25考研英语长难句Day01

Day01 【思考】:本句中有几处平行结构?分别是什么和什么平行并列呢?【a.生词、词组】【b.断开、简化】( 两步分析法)断开长难句的三步法:标点、连接词、分析主谓 【思考】:本句中有几处平行结构…

静电纺丝壳聚糖纳米纤维膜

静电纺丝壳聚糖纳米纤维膜是通过静电纺丝技术制备的一种由壳聚糖纳米纤维组成的薄膜材料。静电纺丝技术是一种有效的制备微纳米纤维的方法,可以将高分子溶液或熔体在静电场作用下喷射成纤维状物质,进而形成纳米纤维膜。 壳聚糖是一种天然高分子多糖&…

接口自动化测试的优势和适用场景!

接口自动化测试的优势和适用场景 在软件开发过程中,接口自动化测试是一项非常重要的任务。它可以帮助团队快速、准确地检测接口的功能、性能和稳定性,提高软件质量,节省时间和资源。本文将从0到1详细规划接口自动化测试的书写。 一、准备工…

洗地机什么牌子最好?618高性价比家用洗地机品牌

随着科技的发展,智能智能清洁家电越来越受到消费者的欢迎。洗地机作为其中的佼佼者,已经成为许多家庭清洁的好帮手。然而,面对满目琳琅的洗地机品牌型号,究竟哪一款机型适合家用呢,正好618也临近了,又有哪些…

Misc 流量分析

流量分析简介 网络流量分析是指捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 在CTF比赛中,以及各种技能大赛对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供…

C语言判断字符旋转

前言 今天我们使用c语言来写代码来实现字符串选择的判断,我们来看题目 题目描述 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 AABCD和s2 BCDAA,返回1 给定s1abcd和s2ACBD,返回0. A…

创建操作手册知识库的终极指南

在繁忙的工作中,有一个方便好用的操作手册知识库能帮我们节省大量时间,避免走弯路。那么,如何创建这样一个知识库呢?下面就给大家讲解一下简单易学的创建步骤。 一、明确目标与需求 在创建操作手册知识库之前,首先要明…

本地运行AI大模型简单示例

一、引言 大模型LLM英文全称是Large Language Model,是指包含超大规模参数(通常在十亿个以上)的神经网络模型。2022年11月底,人工智能对话聊天机器人ChatGPT一经推出,人们利用ChatGPT这样的大模型帮助解决很多事情&am…

YOLOv5 V7.0 - rknn模型的验证 输出精度(P)、召回率(R)、mAP50、mAP50-95

1.简介 RKNN官方没有提供YOLOv5模型的验证工具,而YOLOv5自带的验证工具只能验证pytorch、ONNX等常见格式的模型性能,无法运行rknn格式。考虑到YOLOv5模型转换为rknn会有一定的精度损失,但是需要具体数值才能进行评估,所以需要一个…

python+flask+ldap3搭建简易版IDaaS系统(前端站点)

Python工具开源专栏 Py0006 pythonflaskldap3搭建简易版IDaaS系统(前端站点) Python工具开源专栏前言目录结构前端网站的部分演示首页查询数据数据同步数据关联查询系统日志 完整代码已在GitHub上开源 前言 pythonflaskldap3搭建简易版IDaaS系统的前端站…

SpringBoot指标监控

一.SpringBoot指标监控_添加Actuator功能 Spring Boot Actuator可以帮助程序员监控和管理SpringBoot应用,比如健康检查、内存使用情况统计、线程使用情况统计等。我 们在SpringBoot项目中添加Actuator功能,即可使用Actuator监控 项目,用法如…

geojson文件规格

geojson文件示例, {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [102.0, 0.5]},"properties&q…

【每日力扣】141. 环形链表与142. 环形链表 II

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 141. 环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟…

电脑实时监控软件分享|好用实时屏幕监控软件有哪些?

在当今数字化工作环境和远程办公日益普及的背景下,电脑实时监控软件成为了企业管理、教育监控、家庭监护等多个领域的必备工具。这些软件不仅能够帮助管理者实时了解员工的工作状态,确保工作效率,还能有效防止数据泄露,保护企业或…

热敏电阻怎么进行性能测试?并以LabVIEW为例进行说明

过程也可用于执行热敏电阻测量。RTD和热敏电阻遵循非常相似的功能原理,测量步骤与下面提供的步骤相同。有关热敏电阻的更多信息,请参阅本文档。 查找设备引脚排列 在连接任何信号之前,请找到您的设备引脚排列。 打开NI MAX并展开设备和接口。…

python环境下labelImg图片标注工具的使用

labelimg GitHub地址 python环境下labelImg图片标注工具的使用 1. 写在开头2. 如何使用2.1安装2.2 启动2.2.1 先启动后设置标注的目录2.2.2 指定标注的目录和预设置的标签 2.3 设置自动保存和显示类别。2.4 保存文件类型2.5 [快捷键](https://github.com/HumanSignal/labelImg…

每天五分钟计算机视觉:通过交并比判断对象检测算法的性能

本文重点 在对象检测领域,交并比(Intersection over Union,简称IoU)是衡量算法性能的重要指标之一。它不仅直观地反映了预测框与真实框之间的重叠程度,还是判断算法是否“运行良好”的关键依据。 那个定位是好的? 对象检测任务中,我们希望不仅检测到对象,同时我们还希…

java--GUI

目录 GUI(Graphical User Interface) swing 窗口(JFrame) 面板(JPanel) 流水布局(FlowLayout) 边界布局(BorderLayout) ​编辑 网格布局(GridLayout) 按钮(JButton) 标签组件,用来设置文字(JLabel) 单行文本框组件(JTextField) 多…

京东淘宝1688商品采集商品数据抓取API

item_get-获得淘宝商品详情 item_search 关键字搜索商品 公共参数 请求地址: taobao/item_search 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中&a…