def save_to_excel(self): # 创建一个新的 Workbook 对象 workbook = openpyxl.Workbook() # 选择一个工作表 sheet = workbook.active # 获取文本框中的数据 data = self.textbox.get(1.0, tk.END) # 获取下拉输入框的值 values = [] for widget in self.textbox.winfo_children(): if isinstance(widget, tk.ttk.Combobox): value = widget.get() if value: values.append(value) else: messagebox.showwarning("警告", "请填写下拉输入框!") return # 判断文本框中是否存在内容 if not data.strip(): messagebox.showwarning("警告", "文本框中没有内容!") return # 将数据按列写入工作表中 rows = data.strip().split("\n") for i, row in enumerate(rows): cells = row.split("\t") for j, cell in enumerate(cells): sheet.cell(row=i + 1, column=j + 1, value=cell) # 如果是第一列,添加下拉输入框的值 if j == 0 and values: validation = openpyxl.worksheet.datavalidation.DataValidation(type="list", formula1='"' + ','.join(values) + '"') sheet.add_data_validation(validation) validation.add(sheet.cell(row=i + 1, column=j + 1)) # 保存 Excel 文件 workbook.save("output.xlsx")修改這段代碼將獲取的數據内容和下拉框的值分兩列寫入到excel中
时间: 2023-12-29 11:05:52 浏览: 115
可以按照以下方式修改代码,将数据和下拉框的值分别写入两列:
```python
def save_to_excel(self):
# 创建一个新的 Workbook 对象
workbook = openpyxl.Workbook()
# 选择一个工作表
sheet = workbook.active
# 获取文本框中的数据
data = self.textbox.get(1.0, tk.END)
# 获取下拉输入框的值
values = []
for widget in self.textbox.winfo_children():
if isinstance(widget, tk.ttk.Combobox):
value = widget.get()
if value:
values.append(value)
else:
messagebox.showwarning("警告", "请填写下拉输入框!")
return
# 判断文本框中是否存在内容
if not data.strip():
messagebox.showwarning("警告", "文本框中没有内容!")
return
# 将数据和下拉框的值按列写入工作表中
rows = data.strip().split("\n")
for i, row in enumerate(rows):
cells = row.split("\t")
# 写入数据列
sheet.cell(row=i + 1, column=1, value=cells[0])
# 写入下拉框的值列
if values:
sheet.cell(row=i + 1, column=2, value=values[i] if i < len(values) else "")
# 写入其余列
for j in range(1, len(cells)):
sheet.cell(row=i + 1, column=j + 2, value=cells[j])
# 添加下拉框的值到数据验证中
if values:
validation = openpyxl.worksheet.datavalidation.DataValidation(type="list", formula1='"' + ','.join(values) + '"')
sheet.add_data_validation(validation)
validation.add(sheet["B1:B" + str(len(rows))])
# 保存 Excel 文件
workbook.save("output.xlsx")
```
此代码中,我们将数据和下拉框的值分别写入到第一列和第二列,并将其余列依次写入。同时,我们添加了一个数据验证,将下拉框的值添加到验证列表中,以确保它们是有效的。
阅读全文