def save_to_excel(self): # 检查是否有数据 if not self.textbox.get("1.0", "end").strip(): messagebox.showwarning("警告", "文本框中没有数据!") return # 检查是否有下拉框数据 for widget in self.textbox.winfo_children(): if isinstance(widget, tk.ttk.Combobox) and not widget.get().strip(): messagebox.showwarning("警告", "下拉框中没有数据!") return # 获取文本框中的内容 text = self.textbox.get("1.0", tk.END) # 获取下拉输入框中的内容 combobox_values = [] for child in self.textbox.winfo_children(): if isinstance(child, tk.ttk.Combobox): combobox_values.append(child.get()) filename = r"D:\點檢系統存放資料夾\點檢明細\1.xlsx" workbook = openpyxl.load_workbook(filename) sheet = workbook.active # 获取工作表的最后一行 last_row = sheet.max_row # 将文本框中的内容按行写入工作表 for i, line in enumerate(text.split("\n")): if line.strip() != "": sheet.cell(row=last_row + i + 1, column=1, value=line.strip()) # 将下拉输入框中的内容按行写入工作表 for i, value in enumerate(combobox_values): sheet.cell(row=last_row + i + 2, column=2, value=value) # 保存工作簿 workbook.save(filename)修改這個代碼將打開工作表后先檢查表中的列明是否存在,不存在就寫入如:點檢内容,點擊狀態等的代碼
时间: 2024-01-01 15:03:37 浏览: 34
可以在打开工作表后,先检查第一行的列名是否存在,如果不存在就写入列名,代码如下:
```python
filename = r"D:\點檢系統存放資料夾\點檢明細\1.xlsx"
workbook = openpyxl.load_workbook(filename)
sheet = workbook.active
# 检查第一行是否有列名,如果没有就写入
if sheet.cell(row=1, column=1).value is None:
sheet.cell(row=1, column=1, value="點檢内容")
if sheet.cell(row=1, column=2).value is None:
sheet.cell(row=1, column=2, value="點擊狀態")
# 获取工作表的最后一行
last_row = sheet.max_row
# 将文本框中的内容按行写入工作表
for i, line in enumerate(text.split("\n")):
if line.strip() != "":
sheet.cell(row=last_row + i + 1, column=1, value=line.strip())
# 将下拉输入框中的内容按行写入工作表
for i, value in enumerate(combobox_values):
sheet.cell(row=last_row + i + 2, column=2, value=value)
# 保存工作簿
workbook.save(filename)
```
这样就可以确保表格中的列名存在,避免数据写入出错。