# -*- coding: utf-8 -*- from tkinter import * from tkinter import messagebox, filedialog import pandas as pd import os class Application(Frame): '''一个经典的GUI程序类写法''' def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.createWidget() def createWidget(self): '''创建登录界面的组件''' self.label01 = Label(self, text="文件路径:") self.label01.grid(row=0, column=0) self.entry01 = Entry(self) self.entry01.grid(row=0, column=1) Button(self, text="选择路径", command=self.select_path).grid(row=0, column=2) self.label02 = Label(self, text="文件名称:") self.label02.grid(row=1, column=0) self.entry02 = Entry(self) self.entry02.grid(row=1, column=1) self.label03 = Label(self, text="拆分字段:") self.label03.grid(row=2, column=0) self.entry03 = Entry(self) self.entry03.grid(row=2, column=1) Button(self, text="确定", command=self.find_and_copy_files_with_keyword).grid(row=3, column=1) def select_path(self): path = filedialog.askdirectory() self.entry01.insert(0, path) def find_and_copy_files_with_keyword(self): src_folder = self.entry01.get() file_name = self.entry02.get() keyword = self.entry03.get() if not src_folder or not file_name or not keyword: messagebox.showerror("错误", "所有字段都是必填的") return try: file_path = os.path.join(src_folder, file_name + ".xlsx") if not os.path.exists(file_path): messagebox.showerror("错误", "文件不存在") return # 尝试读取原始Excel文件,并指定engine参数 try: df = pd.read_excel(file_path, engine='openpyxl') except ValueError as ve: messagebox.showerror("错误", f"文件格式错误: {str(ve)}") return except Exception as e: messagebox.showerror("错误", f"无法读取文件: {str(e)}") return if keyword not in df.columns: messagebox.showerror("错误", "拆分字段不存在于Excel文件中") return # 获取所有唯一的区域 regions = df[keyword].unique() # 遍历每个区域并创建一个新的Excel文件 for region in regions: # 根据区域过滤数据 region_df = df[df[keyword] == region] # 创建一个新的Excel文件,文件名可以包含区域名称 output_filename = os.path.join(src_folder, f"{region}.xlsx") # 将数据写入新的Excel文件 try: region_df.to_excel(output_filename, index=False, engine='openpyxl') except Exception as e: messagebox.showerror("错误", f"无法写入文件: {str(e)}") return messagebox.showinfo("完成", f"已拆分完成{len(regions)}个文件!") except Exception as e: messagebox.showerror("错误", f"发生错误: {str(e)}") if __name__ == "__main__": root = Tk() root.geometry("400x200+200+300") root.title("小新拆分-V1.0") app = Application(master=root) root.mainloop()
excel根据字段进行拆分python代码
最新推荐文章于 2024-10-02 10:53:34 发布