使用 wxPython 和 Pandas 将 Excel 中的第1列转换为行

在数据处理和分析过程中,我们经常需要对数据进行各种转换。今天,我将分享如何使用 wxPythonpandas 库创建一个图形用户界面(GUI)应用程序,该程序可以选择一个 Excel 文件并将指定工作表中的第1列转换为行,然后将结果保存到指定目录下。
C:\pythoncode\new\matrixrote.py

环境准备

在开始之前,请确保你已经安装了以下库:

  • wxPython:用于创建 GUI 应用程序。
  • pandas:用于处理 Excel 文件。

可以通过以下命令安装这些库:

pip install wxPython pandas
实现功能的 Python 代码

以下是完整的 Python 代码。该代码创建了一个 GUI 界面,允许用户选择 Excel 文件和工作表,并将第1列转换为行保存到指定目录。

import wx
import pandas as pd
import os

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Excel Column to Row Converter", size=(400, 300))
        
        panel = wx.Panel(self, wx.ID_ANY)
        
        vbox = wx.BoxSizer(wx.VERTICAL)
        
        # File picker for selecting Excel file
        self.file_picker = wx.FilePickerCtrl(panel, message="Choose an Excel file", wildcard="Excel files (*.xlsx)|*.xlsx")
        vbox.Add(self.file_picker, 0, wx.EXPAND | wx.ALL, 10)
        
        # Text control for sheet name
        self.sheet_name = wx.TextCtrl(panel, wx.ID_ANY, "", style=wx.TE_CENTER)
        self.sheet_name.SetHint("Enter sheet name (e.g., Sheet1)")
        vbox.Add(self.sheet_name, 0, wx.EXPAND | wx.ALL, 10)
        
        # Directory picker for selecting save path
        self.save_path_picker = wx.DirPickerCtrl(panel, message="Choose a save directory")
        vbox.Add(self.save_path_picker, 0, wx.EXPAND | wx.ALL, 10)
        
        # Convert button
        self.convert_button = wx.Button(panel, label="Convert")
        vbox.Add(self.convert_button, 0, wx.CENTER | wx.ALL, 10)
        
        self.convert_button.Bind(wx.EVT_BUTTON, self.on_convert)
        
        panel.SetSizer(vbox)
    
    def on_convert(self, event):
        file_path = self.file_picker.GetPath()
        sheet = self.sheet_name.GetValue()
        save_dir = self.save_path_picker.GetPath()
        
        if not file_path or not sheet or not save_dir:
            wx.MessageBox("Please fill in all fields", "Error", wx.ICON_ERROR)
            return
        
        try:
            df = pd.read_excel(file_path, sheet_name=sheet)
            
            if df.empty:
                wx.MessageBox(f"Sheet '{sheet}' is empty or does not exist", "Error", wx.ICON_ERROR)
                return
            
            # Convert the first column to a row
            first_column = df.iloc[:, 0]  # Get the first column
            row_data = first_column.values.reshape(1, -1)
            new_df = pd.DataFrame(row_data)
            
            # Save the new DataFrame to the specified directory
            output_path = os.path.join(save_dir, "converted_first_column_to_row.xlsx")
            new_df.to_excel(output_path, index=False, header=False)
            
            wx.MessageBox(f"File saved to {output_path}", "Success", wx.ICON_INFORMATION)
        
        except Exception as e:
            wx.MessageBox(str(e), "Error", wx.ICON_ERROR)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame()
        frame.Show()
        return True

if __name__ == "__main__":
    app = MyApp(False)
    app.MainLoop()

代码详解
  1. 导入库

    import wx
    import pandas as pd
    import os
    

    导入 wxPython 用于创建 GUI,导入 pandas 用于数据处理,导入 os 用于文件路径操作。

  2. 定义主窗口类 MyFrame

    class MyFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, wx.ID_ANY, "Excel Column to Row Converter", size=(400, 300))
            ...
    

    创建一个继承自 wx.Frame 的类 MyFrame,用于设置 GUI 的窗口和布局。

  3. 添加控件

    • 文件选择器:用于选择 Excel 文件。
    • 文本框:用于输入工作表名称。
    • 目录选择器:用于选择保存目录。
    • 按钮:用于触发转换操作。
  4. 事件处理

    def on_convert(self, event):
        ...
    

    定义 on_convert 方法,当用户点击“Convert”按钮时,执行以下操作:

    • 获取用户输入的文件路径、工作表名称和保存目录。
    • 使用 pandas 读取指定的 Excel 文件和工作表。
    • 检查工作表是否为空或不存在。
    • 提取第1列数据并转换为行。
    • 将转换后的数据保存为新的 Excel 文件。
  5. 主程序

    class MyApp(wx.App):
        def OnInit(self):
            frame = MyFrame()
            frame.Show()
            return True
    
    if __name__ == "__main__":
        app = MyApp(False)
        app.MainLoop()
    

    创建应用程序实例并启动主事件循环。

如何运行
  1. 保存上述代码到一个文件中,例如 matrixrote.py

  2. 确保你已经安装了 wxPythonpandas

  3. 打开命令行窗口,运行脚本:

    python matrixrote.py
    
  4. 在弹出的 GUI 界面中,选择一个 Excel 文件,输入工作表名称,选择保存目录,点击“Convert”按钮即可完成操作。

在这里插入图片描述

帮我设计一个程序,我需要一个基于Python开发的的程序,这个程序中需要有窗口各种按钮,并且对步骤录入的文件类型以及详细操作有说明,名字可以叫做log转换josn工具,转换后将转换后的Excel新生成的josn都保存在脚本路径下 一、首先需要我导入以log为文件类型的日志文件、以json为文件类型的josn文件、还有一个xlsx文件类型的Excel文件 二、点击开始后,先对Excel文件与log文件进第一次处理,处理规则如下: 1、需要在Excel中读取表格中的函数名称,在log文件中依次搜索该函数名称的值,并将此函数值回填到表格中的参数值列 2、对应的函数名称参数值需要一一对应 3、如果log中搜索出现多个重复结果,即复制其中一个即可 4、举例: 表格中的函数名称为:WOSWV 搜索文本中的:WOSWV VALUE 得到结果:WOSWV VALUE:OWW251_11_A.64_250125_d784fa8b_MCU_2501211227 此时给表格中的value回填:OWW251_11_A.64_250125_d784fa8b_MCU_2501211227 5、将此Excel的命名改为BSN的参数值,并在命名前加“Data_”,比如:Data_xxxxxxxxxxx 7、我的表格中第一行的列名是FunctionValue 8、如果在log中没有搜索到对应的函数值,可以将此函数继续展示为空 9、针对BSN的参数值,在log文件中则需要搜索G_MBSN VALUE,搜索到G_MBSN VALUE:HB4CDG2BR000000000001095,此时我需要保存的BSN参数值实际为HB4CDG2BR000000000001095 三、处理完成Excel文件后使用新生成的Excel文件继续处理josn文件,处理规则如下: 1Excel表格中的函数名称以及对应的参数值转换到json文件中对应函数的参数值区; 2、表格中没有的函数,请保持josn文件中的参数以及数据,不要更改; 3、函数以及参数值在josn中的格式为,举例: 表格中为函数名称:WOSWV;参数值:OWW251_11_A.57_250104_d784fa8b_MCU_202411291212 原josn文件中数据:"WOSWV":"OWW251_11_A.57_
04-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值