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中,在寫入前要判斷文本框中是否存在内容和下拉輸入框是否有值,如果沒有就提醒
时间: 2023-12-29 08:05:52 浏览: 26
您可以使用openpyxl模块来实现将文本框中的内容和下拉输入框的值按列写入Excel的功能。可以先定义一个函数,将文本框中的数据和下拉框的值读取出来,并存储到一个二维数组中,再使用openpyxl模块将其写入Excel文件中。下面是一个可能的实现方式:
```python
import openpyxl
def save_to_excel(sheet_name, textbox):
sheet_data = [] # 存储表格数据的二维数组
for line in textbox.get("1.0", "end").split("\n"):
line_data = []
if line.strip() == "": # 跳过空行
continue
for i, cell in enumerate(line.split("\t")):
if i == 0: # 第一列为下拉框的值,需要特殊处理
if cell.startswith("Combobox("): # 如果是下拉框,则取其值
cell = cell.split("(")[1].split(")")[0]
else: # 否则为空值
cell = ""
line_data.append(cell)
sheet_data.append(line_data)
if len(sheet_data) == 0: # 如果表格中没有数据,则提醒用户
messagebox.showwarning("提示", "表格中没有数据,无法保存!")
return
wb = openpyxl.Workbook()
ws = wb.active
ws.title = sheet_name
for row_data in sheet_data:
ws.append(row_data)
wb.save("output.xlsx")
messagebox.showinfo("提示", "保存成功!")
```
这个函数需要两个参数,`sheet_name`表示要保存的工作表名称,`textbox`表示要读取数据的文本框。函数先将文本框中的内容按行读取,并将每行的数据按制表符分割成一个列表。然后对于每个列表中的元素,如果是第一列,则需要特殊处理,因为第一列是下拉框的值。如果是下拉框,则取其值,否则为空值。最后将每行的数据存储到一个二维数组中。
如果表格中没有数据,则弹出提示框提醒用户。否则,创建一个新的Excel文件并写入数据。最后弹出提示框告诉用户保存成功。