sydomain

思绪来的快,去的也快,偶尔在这里停留。

python合并excel工作表(xlsx跟xls)

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()


Powered By sydomain

Copyright Your WebSite.Some Rights Reserved.