有没有Python大神知道如何把自定义内容填写至合并的工作簿sheet1工作表C1单元格中。求指点
import tkinter as tk
from tkinter import filedialog
from openpyxl import Workbook, load_workbook
class ExcelMerger:
def __init__(self, master):
self.master = master
self.master.title("Excel Merger")
self.file_list = []
self.main_file = None
self.custom_content = ""
self.save_path = ""
# 子文件列表输入框
self.file_list_var = tk.StringVar()
tk.Label(master, text="子Excel文件列表:").grid(row=0, column=0, sticky="w")
tk.Entry(master, textvariable=self.file_list_var, width=60).grid(row=0, column=1, columnspan=3)
tk.Button(master, text="选择文件", command=self.add_files).grid(row=0, column=4)
# 主文件选择输入框
self.main_file_var = tk.StringVar()
tk.Label(master, text="主Excel文件:").grid(row=1, column=0, sticky="w")
tk.Entry(master, textvariable=self.main_file_var, width=60).grid(row=1, column=1, columnspan=3)
tk.Button(master, text="选择文件", command=self.choose_main_file).grid(row=1, column=4)
# 自定义内容输入框
self.content_var = tk.StringVar()
tk.Label(master, text="自定义内容:").grid(row=2, column=0, sticky="w")
tk.Entry(master, textvariable=self.content_var, width=60).grid(row=2, column=1, columnspan=3)
# 另存为路径输入框
self.save_path_var = tk.StringVar()
tk.Label(master, text="合并后文件保存路径:").grid(row=3, column=0, sticky="w")
tk.Entry(master, textvariable=self.save_path_var, width=60).grid(row=3, column=1, columnspan=3)
tk.Button(master, text="选择路径", command=self.choose_save_path).grid(row=3, column=4)
# 合并按钮
tk.Button(master, text="合并", command=self.merge_files).grid(row=4, column=2)
def add_files(self):
files = filedialog.askopenfilenames(filetypes=[("Excel文件", "*.xlsx")])
if files:
self.file_list.extend(files)
self.file_list_var.set("\n".join(self.file_list))
def choose_main_file(self):
file = filedialog.askopenfilename(filetypes=[("Excel文件", "*.xlsx")])
if file:
self.main_file = file
self.main_file_var.set(file)
def choose_save_path(self):
path = filedialog.askdirectory()
if path:
self.save_path = path
self.save_path_var.set(path)
def merge_files(self):
if not self.main_file or not self.save_path:
tk.messagebox.showerror("错误", "请选择主文件和保存路径!")
return
if not self.file_list:
tk.messagebox.showerror("错误", "请选择要合并的文件!")
return
main_wb = load_workbook(self.main_file)
if 'Sheet1' in main_wb.sheetnames:
main_wb.remove(main_wb['Sheet1'])
for f in self.file_list:
wb = load_workbook(f)
ws_name = wb.sheetnames[0]
ws = wb[ws_name]
main_ws = main_wb.create_sheet(ws_name)
for row in ws.rows:
main_ws.append([cell.value for cell in row])
if self.custom_content:
main_ws['Sheet!C1'] = self.custom_content
main_wb.save(f"{self.save_path}/{f.split('/')[-1]}")
main_wb.remove(main_ws)
if __name__ == "__main__":
root = tk.Tk()
app = ExcelMerger(root)
root.mainloop()
推荐文章: