首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

多表格合并产生的一个脚本

帮我写一个程序,功能为:对一个文件夹中的多个表格合并成一个表格。软件界面上有打开文件夹可以打开要合并文件夹,有导出路径按键,可以选导出位置,有开始按键,开始整个合并为一个表格的操作,完成后显示完成两个字!

这是我想要的一个功能程序,于是用deepseek问了?!!

于是有了以下代码:

以下是一个使用Python和Tkinter编写的表格合并程序,支持合并Excel和CSV文件:

```python

import tkinter as tk

from tkinter import ttk, filedialog, messagebox

import pandas as pd

import os

import threading

class MergeApp:

   def __init__(self, root):

       self.root = root

       root.title("表格合并工具")

       root.geometry("600x250")

       # 初始化变量

       self.folder_path = tk.StringVar()

       self.export_path = tk.StringVar()

       self.status = tk.StringVar()

       self.status.set("准备就绪")

       # 界面布局

       ttk.Label(root, text="源文件夹:").grid(row=0, column=0, padx=10, pady=10, sticky="w")

       ttk.Entry(root, textvariable=self.folder_path, width=50).grid(row=0, column=1, padx=5)

       ttk.Button(root, text="选择文件夹", command=self.select_folder).grid(row=0, column=2, padx=10)

       ttk.Label(root, text="保存路径:").grid(row=1, column=0, padx=10, pady=10, sticky="w")

       ttk.Entry(root, textvariable=self.export_path, width=50).grid(row=1, column=1, padx=5)

       ttk.Button(root, text="选择路径", command=self.select_export).grid(row=1, column=2, padx=10)

       self.start_btn = ttk.Button(root, text="开始合并", command=self.start_merge)

       self.start_btn.grid(row=2, column=1, pady=20)

       ttk.Label(root, textvariable=self.status).grid(row=3, column=1)

       # 绑定事件

       root.bind('<>', self.merge_success)

       root.bind('<>', self.merge_error)

   def select_folder(self):

       folder = filedialog.askdirectory()

       if folder:

           self.folder_path.set(folder)

   def select_export(self):

       files = [("Excel文件", "*.xlsx"), ("CSV文件", "*.csv")]

       filepath = filedialog.asksaveasfilename(filetypes=files, defaultextension=".xlsx")

       if filepath:

           self.export_path.set(filepath)

   def start_merge(self):

       if not self.folder_path.get() or not self.export_path.get():

           messagebox.showwarning("警告", "请先选择源文件夹和保存路径")

           return

       self.start_btn['state'] = 'disabled'

       self.status.set("正在合并中...")

       # 启动合并线程

       threading.Thread(target=self.merge_files, daemon=True).start()

   def merge_files(self):

       try:

           # 获取所有支持的文件

           valid_ext = ('.xlsx', '.xls', '.csv')

           files = [

               os.path.join(self.folder_path.get(), f)

               for f in os.listdir(self.folder_path.get())

               if f.lower().endswith(valid_ext)

           ]

           if not files:

               raise ValueError("没有找到可合并的文件")

           # 读取并合并数据

           dfs = []

           for file in files:

               if file.endswith(('.xlsx', '.xls')):

                   df = pd.read_excel(file)

               elif file.endswith('.csv'):

                   df = pd.read_csv(file)

               dfs.append(df)

           combined_df = pd.concat(dfs, ignore_index=True)

           # 保存文件

           export_path = self.export_path.get()

           if export_path.endswith('.csv'):

               combined_df.to_csv(export_path, index=False)

           else:

               combined_df.to_excel(export_path, index=False)

           self.root.event_generate('<>')

       except Exception as e:

           self.root.event_generate('<>', when='tail')

           print(f"错误信息: {str(e)}")

   def merge_success(self, event=None):

       self.start_btn['state'] = 'normal'

       self.status.set("合并完成!")

       messagebox.showinfo("成功", "文件合并完成!")

   def merge_error(self, event=None):

       self.start_btn['state'] = 'normal'

       self.status.set("合并出错!")

       messagebox.showerror("错误", "合并过程中出现错误,请检查文件和路径")

if __name__ == "__main__":

   root = tk.Tk()

   app = MergeApp(root)

   root.mainloop()

```

使用说明:

1. 运行程序后会显示图形界面

2. 点击"选择文件夹"按钮选择包含要合并表格文件的文件夹

3. 点击"选择路径"按钮指定合并后的文件保存位置和格式(支持.xlsx和.csv)

4. 点击"开始合并"按钮执行合并操作

5. 合并完成后会显示提示信息

程序特点:

- 支持合并Excel(.xlsx, .xls)和CSV文件

- 自动跳过非表格文件

- 合并时保留各文件的列标题(假设所有文件结构相同)

- 支持多线程操作,界面不会卡死

- 提供错误提示和状态反馈

- 自动创建保存路径所需的目录

注意:

- 需要安装pandas和openpyxl库(处理Excel文件)

- 所有要合并的表格文件应有相同的列结构

- 合并时会自动跳过隐藏文件和非表格文件

- 建议将相同格式的文件放在源文件夹中

安装依赖:

```bash

pip install pandas openpyxl

```

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OXu1kq7URb7JR9d152tyJKRQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券