You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用PySimpleGUI创建表单实现Excel数据读取(反向录入流程)

使用PySimpleGUI实现从Excel读取数据的表单

完全可以实现你需要的反向流程——从Excel表格读取数据并在PySimpleGUI表单中展示(支持查看、切换记录)。以下是具体实现方案:

依赖安装

首先安装所需依赖库:

pip install PySimpleGUI pandas openpyxl

完整代码示例

import PySimpleGUI as sg
import pandas as pd

# 读取Excel数据
def load_excel_data(file_path):
    try:
        df = pd.read_excel(file_path, engine='openpyxl')
        return df, df.columns.tolist()
    except Exception as e:
        sg.popup_error(f"读取Excel失败: {str(e)}")
        return None, None

# 主程序
def main():
    # 替换为你的Excel文件路径
    excel_file = "data.xlsx"
    df, columns = load_excel_data(excel_file)
    if df is None:
        return

    # 初始化当前记录索引
    current_row = 0
    total_rows = len(df)

    # 动态生成表单布局
    layout = [
        [sg.Text("Excel数据查看表单", font=("Arial", 14))],
        *[[sg.Text(f"{col}:", size=(15,1)), sg.InputText(key=f"-{col}-", disabled=True)] for col in columns],
        [sg.Button("上一条"), sg.Button("下一条"), sg.Button("退出")],
        [sg.Text(f"当前记录: {current_row+1}/{total_rows}", key="-STATUS-")]
    ]

    window = sg.Window("Excel数据读取表单", layout)

    # 填充初始数据
    for col in columns:
        window[f"-{col}-"].update(df.iloc[current_row][col])

    # 事件循环处理交互
    while True:
        event, values = window.read()
        if event == sg.WINDOW_CLOSED or event == "退出":
            break
        elif event == "下一条":
            if current_row < total_rows -1:
                current_row +=1
                for col in columns:
                    window[f"-{col}-"].update(df.iloc[current_row][col])
                window["-STATUS-"].update(f"当前记录: {current_row+1}/{total_rows}")
            else:
                sg.popup("已经是最后一条记录")
        elif event == "上一条":
            if current_row >0:
                current_row -=1
                for col in columns:
                    window[f"-{col}-"].update(df.iloc[current_row][col])
                window["-STATUS-"].update(f"当前记录: {current_row+1}/{total_rows}")
            else:
                sg.popup("已经是第一条记录")

    window.close()

if __name__ == "__main__":
    main()

代码说明

  • load_excel_data函数:负责读取Excel文件,返回数据表格和列名列表,同时处理读取异常。
  • 动态布局:根据Excel的列自动生成表单输入框,默认设为只读(如需编辑可去掉disabled=True参数)。
  • 记录切换:通过按钮遍历Excel中的行数据,实时更新表单内容和状态提示。

你可以根据需求扩展功能:比如添加编辑后保存回Excel、数据筛选、文件选择弹窗等。

内容的提问来源于stack exchange,提问作者PyiPath2022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:40:27