能否用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
相关产品推荐
相关产品推荐

