def load_excel(self, filename, menu_label, selected_label_text): for widget in self.sheet_frame.winfo_children(): widget.destroy() for widget in self.unique_listbox.winfo_children(): widget.destroy() self.la = menu_label self.workbook = xl.load_workbook(filename) self.sheet_names = sorted(self.workbook.sheetnames) # 按工作表名称从小到大排序 self.selected_label.config(text=selected_label_text) # 更新选中标签文本 data4 = self.la if not data4.endswith('.xlsx'): data4 += '.xlsx' # 拼接完整的文件路径 wo = pinjie filepath = os.path.join(wo, data4) print(filepath) # 判断文件是否存在,如果存在则打开,否则创建一个新的 Excel 文件 if os.path.exists(filepath): wb = openpyxl.load_workbook(filepath) print(f'{filepath}文件存在...') else: wb = openpyxl.Workbook() print(f'{filepath}創建好了') ws = wb.active wb.save(filepath) # 在右下側添加文本標簽 for i, sheet_name in enumerate(self.sheet_names): print(sheet_name) filtered_rows = [] # 打开文件并筛选当天日期 if os.path.exists(filepath):#判断 Excel 文件是否存在。 workbook = xl.load_workbook(filepath)#打开 Excel 文件。 label = tk.Label(self.unique_listbox, text=sheet_name) # 在右下側添加文本標簽 if filtered_rows: label.config(text=f"{sheet_name} - 已點檢") else: label.config(text=f"{sheet_name} - 未點檢") label.grid(row=i // 5, column=i % 5, sticky="ew", padx=1, pady=1)修改這段代碼,打開filepath文件在第3列篩選出當天日期,然後用獲取另一個工作薄中所有的工作表名去匹配filepath文件第九列的内容,如果有相同内容就將獲取的工作表名添加到右側下面的文本框中,并在後面添加已點檢,沒有内容就寫上未點檢添加到文本框中
时间: 2024-01-15 21:03:47 浏览: 86
以下是修改后的代码:
```
import datetime
def load_excel(self, filename, menu_label, selected_label_text):
for widget in self.sheet_frame.winfo_children():
widget.destroy()
for widget in self.unique_listbox.winfo_children():
widget.destroy()
self.la = menu_label
self.workbook = xl.load_workbook(filename)
self.sheet_names = sorted(self.workbook.sheetnames) # 按工作表名称从小到大排序
self.selected_label.config(text=selected_label_text) # 更新选中标签文本
# 修改部分
date_today = datetime.date.today().strftime('%Y-%m-%d')
wb = openpyxl.load_workbook(filename)
ws = wb.active
for row in ws.iter_rows(min_row=3, max_row=ws.max_row, min_col=3, max_col=3):
if row[0].value == date_today:
filtered_rows.append(row[0].row)
wb.close()
data4 = self.la
if not data4.endswith('.xlsx'):
data4 += '.xlsx'
wo = pinjie
filepath = os.path.join(wo, data4)
print(filepath)
if os.path.exists(filepath):
wb = openpyxl.load_workbook(filepath)
print(f'{filepath}文件存在...')
else:
wb = openpyxl.Workbook()
print(f'{filepath}创建好了')
ws = wb.active
wb.save(filepath)
for i, sheet_name in enumerate(self.sheet_names):
if sheet_name in ws['I']:
label = tk.Label(self.unique_listbox, text=f"{sheet_name} - 已點檢")
else:
label = tk.Label(self.unique_listbox, text=f"{sheet_name} - 未點檢")
label.grid(row=i // 5, column=i % 5, sticky="ew", padx=1, pady=1)
```
这段代码的主要修改如下:
1. 添加了 `datetime` 模块,用于获取当前日期。
2. 在打开 Excel 文件后,使用 `openpyxl` 库的 `iter_rows()` 方法筛选出第三列中值为当天日期的行。
3. 在遍历工作表名称时,通过判断工作表名称是否出现在 `I` 列中实现匹配,并在标签文本后面添加已/未点检的标志。
阅读全文