使用 Python 3 和 tkinter 写一个表格处理程序,GUI界面为:2个文本框2个按钮,按钮名称分别叫导入表格、处理表格。当点击导入表格按钮时,导入要处理的表格,将路径存储到文本框中。点击处理按钮时,遍历表格中第三个工作表到最后一个工作表,获取工作表中从第4行开始到最后一行中B列和C列数据,依次填入工作表名为“汇总”工作表中,从第4行的B列和C列开始填写,处理完成后在第二个文本框中显示处理完成。
时间: 2024-02-12 17:07:07 浏览: 137
好的,以下是代码实现。
```python
import tkinter as tk
from tkinter import filedialog
import openpyxl
class TableProcessGUI:
def __init__(self, master):
self.master = master
master.title("表格处理程序")
# 第一个文本框
self.path_text = tk.Text(master, height=1, width=50)
self.path_text.grid(row=0, column=0, padx=5, pady=5)
# 导入表格按钮
self.import_button = tk.Button(master, text="导入表格", command=self.import_table)
self.import_button.grid(row=0, column=1, padx=5, pady=5)
# 处理表格按钮
self.process_button = tk.Button(master, text="处理表格", command=self.process_table)
self.process_button.grid(row=1, column=1, padx=5, pady=5)
# 第二个文本框
self.status_text = tk.Text(master, height=1, width=50)
self.status_text.grid(row=2, column=0, padx=5, pady=5)
def import_table(self):
# 选择要导入的表格文件
file_path = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx"), ("All files", "*.*")])
# 将文件路径显示在第一个文本框中
self.path_text.delete(1.0, tk.END)
self.path_text.insert(tk.END, file_path)
def process_table(self):
# 获取要处理的表格文件路径
file_path = self.path_text.get(1.0, tk.END).strip()
if not file_path:
self.status_text.delete(1.0, tk.END)
self.status_text.insert(tk.END, "请先选择要处理的表格文件!")
return
try:
# 打开工作簿
wb = openpyxl.load_workbook(filename=file_path)
# 获取所有工作表名
sheet_names = wb.sheetnames
# 创建“汇总”工作表
summary_ws = wb.create_sheet("汇总")
# 遍历第三个工作表到最后一个工作表
for sheet_name in sheet_names[2:]:
# 获取当前工作表
ws = wb[sheet_name]
# 获取B列和C列数据
data = [(ws.cell(row=i, column=2).value, ws.cell(row=i, column=3).value) for i in range(4, ws.max_row+1)]
# 写入“汇总”工作表
for i, row_data in enumerate(data):
summary_ws.cell(row=i+4, column=2).value = row_data[0]
summary_ws.cell(row=i+4, column=3).value = row_data[1]
# 保存工作簿
wb.save(file_path)
self.status_text.delete(1.0, tk.END)
self.status_text.insert(tk.END, "处理完成!")
except:
self.status_text.delete(1.0, tk.END)
self.status_text.insert(tk.END, "处理失败,请检查表格文件!")
root = tk.Tk()
my_gui = TableProcessGUI(root)
root.mainloop()
```
使用时,点击导入表格按钮选择要处理的表格文件,路径将显示在第一个文本框中。点击处理表格按钮,程序将遍历表格中第三个工作表到最后一个工作表,获取工作表中从第4行开始到最后一行中B列和C列数据,依次填入工作表名为“汇总”工作表中,从第4行的B列和C列开始填写。处理完成后,在第二个文本框中显示处理完成或处理失败的信息。
阅读全文