使用 Python 3 和 tkinter 写一个excle表处理程序,GUI界面为:3个文本框3个按钮,按钮名称分别叫导入表格、绩效总表、处理表格。 点击“导入表格”按钮导入多个需要处理的表格文件显示在第一个文本框中。点击“绩效总表”按钮导入表格文件显示到第二个文本框中,点击处理表格按钮,将每一个导入的表格的第一给工作表的名称改为表格文件名,然后复制导入表格中每一个表格的第一个工作表(包括格式)粘贴到导入的第二个文本框中的表格中。
时间: 2024-02-12 09:06:15 浏览: 60
好的,下面是一个代码实现的示例,你可以根据需要进行修改:
```python
import os
import pandas as pd
import tkinter as tk
from tkinter import filedialog
class ExcelProcessor:
def __init__(self, master):
self.master = master
self.file_names = []
self.output_file_name = None
# 创建 GUI 界面
tk.Label(master, text="导入表格:").grid(row=0, column=0, sticky="w")
self.input_entry = tk.Entry(master, width=50)
self.input_entry.grid(row=0, column=1)
tk.Button(master, text="选择文件", command=self.choose_input_files).grid(row=0, column=2)
tk.Label(master, text="绩效总表:").grid(row=1, column=0, sticky="w")
self.output_entry = tk.Entry(master, width=50)
self.output_entry.grid(row=1, column=1)
tk.Button(master, text="选择文件", command=self.choose_output_file).grid(row=1, column=2)
tk.Button(master, text="处理表格", command=self.process_files).grid(row=2, column=1)
def choose_input_files(self):
# 打开文件选择对话框,选择需要处理的表格文件
self.file_names = filedialog.askopenfilenames(filetypes=[("Excel files", "*.xlsx;*.xls")])
self.input_entry.delete(0, tk.END)
self.input_entry.insert(0, ";".join(self.file_names))
def choose_output_file(self):
# 打开文件选择对话框,选择绩效总表文件
self.output_file_name = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx;*.xls")])
self.output_entry.delete(0, tk.END)
self.output_entry.insert(0, self.output_file_name)
def process_files(self):
if not self.file_names or not self.output_file_name:
return
# 读取绩效总表文件
output_df = pd.read_excel(self.output_file_name, sheet_name=None)
output_sheet_names = list(output_df.keys())
output_sheet_name = output_sheet_names[0]
output_sheet = output_df[output_sheet_name]
# 处理每一个导入的表格文件
for file_name in self.file_names:
# 读取表格文件
df = pd.read_excel(file_name, sheet_name=None)
sheet_names = list(df.keys())
sheet_name = sheet_names[0]
sheet = df[sheet_name]
# 将第一个工作表的名称改为文件名
sheet_name = os.path.splitext(os.path.basename(file_name))[0]
sheet = sheet.rename(sheet_name)
# 复制第一个工作表到绩效总表
output_sheet = pd.concat([output_sheet, sheet], axis=0)
# 将处理后的绩效总表保存到新文件中
writer = pd.ExcelWriter("output.xlsx")
output_sheet.to_excel(writer, index=False)
writer.save()
# 清空输入和输出框
self.input_entry.delete(0, tk.END)
self.output_entry.delete(0, tk.END)
self.file_names = []
self.output_file_name = None
# 提示处理完成
tk.messagebox.showinfo("提示", "表格处理完成!")
if __name__ == "__main__":
root = tk.Tk()
root.title("Excel表格处理程序")
app = ExcelProcessor(root)
root.mainloop()
```
这个程序使用了 pandas 模块进行表格的读取和处理,使用了 tkinter 模块进行 GUI 界面的创建。当用户点击“导入表格”按钮时,可以选择多个需要处理的表格文件,这些文件名会显示在第一个文本框中;当用户点击“绩效总表”按钮时,可以选择绩效总表文件,文件名会显示在第二个文本框中;当用户点击“处理表格”按钮时,程序会将每个导入的表格的第一个工作表的名称改为文件名,然后复制到绩效总表文件中的第一个工作表后面,最后将处理后的绩效总表保存到一个新的文件中。程序还提供了一些提示信息,例如处理完成的提示框。
阅读全文