import os import pandas as pd import tkinter as tk from tkinter import filedialog from tkinter.ttk import Button, Frame, Label def read_and_merge_excel_files(folder_path): all_dfs = [] for file_name in os.listdir(folder_path): if file_name.endswith(".xlsx") or file_name.endswith(".xls"): file_path = os.path.join(folder_path, file_name) try: df = pd.read_excel(file_path, engine='openpyxl') if file_name.endswith(".xlsx") else pd.read_excel(file_path) all_dfs.append(df) except Exception as e: print(f"An error occurred with {file_name}: {e}") else: print(f"跳过非Excel文件: {file_name}") if all_dfs: merged_data = pd.concat(all_dfs, ignore_index=True) output_file = os.path.join(folder_path, 'new_merged_file.xlsx') merged_data.to_excel(output_file, index=False, engine='openpyxl') print("已完成: 合并所有Excel文件到当前目录下以new_merged_file.xlsx命名的文件") else: print("没有找到任何Excel文件") def select_folder(): folder_path = filedialog.askdirectory(title="选择文件夹") if folder_path: read_and_merge_excel_files(folder_path) else: print("请选择一个文件夹") def create_close_button(frame): close_button = Button(frame, text="关闭", command=root.quit) close_button.pack(side=tk.RIGHT) def create_title_frame(): title_frame = Frame(root, bg="blue", width=200, height=50) Label(title_frame, text="Excel批量处理程序", bg="blue", fg="white").pack(side=tk.LEFT) create_close_button(title_frame) title_frame.pack(pady=10) # 创建主窗口 root = tk.Tk() root.title("Excel 合并文件") root.geometry("400x300") # 设置窗口大小 root.configure(background='darkblue') # 设置背景色 # 添加文字说明 label = tk.Label(root, text="1.选择你放文件的文件夹即可\n2.程序自动处理并自动保存\n\n例子:文件A放在文件夹B\n程序处理之后的新文件\n将自动保存在当前文件中", bg="darkblue", fg="white", font=("Arial", 16)) label.pack(pady=10) # 垂直方向上添加一些间距 # 在标签的右下角添加作者信息 author_label = tk.Label(root, text="作者:sy", bg="darkblue", fg="white", font=("Arial", 12)) author_label.place(x=350, y=270, anchor="se") # 将作者标签放置在标签的右下角 # 添加一个按钮,点击时执行select_folder函数 button = tk.Button(root, text="选择文件夹", command=select_folder) button.pack() # 运行主循环,等待事件处理 root.mainloop()