class ExcelApp: def init(self, master): self.master = master master.title("Excel App") # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar) # 创建工具栏 toolbar = tk.Frame(master, height=30) tk.Button(toolbar, text="打开", command=self.open_file).pack(side=tk.LEFT, padx=2, pady=2) tk.Button(toolbar, text="保存", command=self.save_file).pack(side=tk.LEFT, padx=2, pady=2) toolbar.pack(side=tk.TOP, fill=tk.X) def show_sheet(self, sheet_name): self.textbox.tag_configure("left", justify="left") sheet = self.workbook[sheet_name] rows = sheet.max_row # 清空文本框 self.textbox.delete(1.0, tk.END) # 添加表名并设置居中标签 self.textbox.insert(tk.END, sheet_name + ":\n", "center") # 显示工作表内容,并在相应数据后面添加下拉输入框 for row in sheet.iter_rows(values_only=True): for i, cell in enumerate(row): line = str(cell) + "\t" if i == 0: # 在第一列数据后面添加下拉输入框 combobox = tk.ttk.Combobox(self.textbox, values=["下拉选项1", "下拉选项2", "下拉选项3"]) combobox.pack(side=tk.TOP, padx=10, pady=5) self.textbox.window_create(tk.END, window=combobox) self.textbox.insert(tk.END, line, "left") self.textbox.insert(tk.END, "\n") # 设置居中标签的样式 self.textbox.tag_configure("center", justify="center", font=("Arial", 14, "bold"))根據這段代碼,儅用戶在點擊保存時,將文本框中添加的表名寫入一個excel第一列中,在講文本框中顯示的數據内容和下拉輸入框内容分別寫入excel第二列第3列中循環寫入
时间: 2023-11-06 12:06:56 浏览: 81
可以按照以下步骤实现:
1. 在ExcelApp类的init方法中创建一个workbook对象,用于保存Excel文件。
2. 在保存文件的方法save_file中,先获取文本框中的内容和选中的下拉框的内容,将它们存储到一个列表中。
3. 然后获取当前选中的工作表,将列表中的数据写入到该工作表的第二列和第三列中。
4. 最后将表名写入到第一列。
下面是一种可能的实现方式:
```python
import openpyxl
class ExcelApp:
def __init__(self, master):
self.master = master
self.master.title("Excel App")
# 创建菜单栏
menubar = tk.Menu(master)
master.config(menu=menubar)
# 创建工具栏
toolbar = tk.Frame(master, height=30)
tk.Button(toolbar, text="打开", command=self.open_file).pack(side=tk.LEFT, padx=2, pady=2)
tk.Button(toolbar, text="保存", command=self.save_file).pack(side=tk.LEFT, padx=2, pady=2)
toolbar.pack(side=tk.TOP, fill=tk.X)
# 创建文本框
self.textbox = tk.Text(master)
self.textbox.pack(expand=True, fill=tk.BOTH)
# 创建工作簿
self.workbook = openpyxl.Workbook()
def open_file(self):
# TODO: 打开Excel文件并显示内容
pass
def save_file(self):
# 获取当前工作表
sheet_name = self.workbook.active.title
# 获取文本框中的内容和下拉框的值
data = []
for line in self.textbox.get("1.0", tk.END).splitlines():
if line.strip():
cells = line.split("\t")
if len(cells) > 1:
data.append((cells[0], cells[1]))
# 将数据写入Excel文件
sheet = self.workbook[sheet_name]
for i, (name, value) in enumerate(data):
sheet.cell(row=i+2, column=2).value = name
sheet.cell(row=i+2, column=3).value = value
# 将表名写入Excel文件
sheet.cell(row=1, column=1).value = sheet_name
# 保存Excel文件
self.workbook.save("data.xlsx")
def show_sheet(self, sheet_name):
self.textbox.tag_configure("left", justify="left")
sheet = self.workbook[sheet_name]
rows = sheet.max_row
# 清空文本框
self.textbox.delete(1.0, tk.END)
# 添加表名并设置居中标签
self.textbox.insert(tk.END, sheet_name + ":\n", "center")
# 显示工作表内容,并在相应数据后面添加下拉输入框
for row in sheet.iter_rows(values_only=True):
for i, cell in enumerate(row):
line = str(cell) + "\t"
if i == 0:
# 在第一列数据后面添加下拉输入框
combobox = tk.ttk.Combobox(self.textbox, values=["下拉选项1", "下拉选项2", "下拉选项3"])
combobox.pack(side=tk.TOP, padx=10, pady=5)
self.textbox.window_create(tk.END, window=combobox)
self.textbox.insert(tk.END, line, "left")
else:
self.textbox.insert(tk.END, line, "left")
self.textbox.insert(tk.END, "\n")
# 设置居中标签的样式
self.textbox.tag_configure("center", justify="center", font=("Arial", 14, "bold"))
```
阅读全文