Python 獲取工作薄1中所有工作表名,寫入一個列表1中,在打開另一個工作薄2,獲取當前工作表,獲取當前時間判斷是在08:00到19:00之内的就在第7列篩選出内容是D的内容,如果是在20:00到07:00之内的在7列篩選出内容是N的内容,然後在第3列篩選出日期為當天相應的日期整行數据寫入列表2中,然後用列表1的内容去列表2中的第1列判斷是否有相同内容,如果有就在列表1相應數據後面寫上已點檢,沒有就寫未點檢,最後將列表1的數據顯示到這個列表框中unique_frame = tk.Frame(self.panel_right, bg='white') unique_frame.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5) # 创建按钮 button = tk.Button(text_frame, text="刷新", command=self.refresh_labels) button.pack(side=tk.LEFT, padx=5) # 创建标签和列表框 unique_label = tk.Label(text_frame) unique_label.pack(side=tk.LEFT, padx=5) self.unique_listbox = tk.Listbox(unique_frame) self.unique_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
时间: 2024-03-28 22:42:00 浏览: 53
以下是完整的 Python 代码实现,对于你提供的需求进行了详细的处理和注释:
```python
import openpyxl
import datetime
import tkinter as tk
# 获取工作薄1中所有工作表名
workbook1 = openpyxl.load_workbook('workbook1.xlsx')
sheet_names = workbook1.sheetnames
# 创建一个空列表,用于存储符合条件的数据
data_list = []
# 打开工作薄2并获取当前工作表
workbook2 = openpyxl.load_workbook('workbook2.xlsx')
current_sheet = workbook2.active
# 获取当前时间并判断时间段
now = datetime.datetime.now()
if now.hour >= 8 and now.hour < 20:
keyword = 'D'
else:
keyword = 'N'
# 筛选数据并写入列表2
for row in current_sheet.iter_rows(min_row=7, max_col=current_sheet.max_column, values_only=True):
# 判断是否符合条件
if row[6] == keyword and row[2].date() == now.date():
# 将符合条件的数据添加到列表中
data_list.append(row)
# 遍历工作薄1中的所有工作表
for sheet_name in sheet_names:
sheet = workbook1[sheet_name]
# 遍历第一行的所有单元格
for cell in sheet[1]:
# 判断单元格的值是否在列表2的第一列中
if cell.value in [row[0] for row in data_list]:
# 在相应的单元格中写入“已点检”
sheet.cell(row=1, column=cell.column+1).value = '已点检'
else:
# 在相应的单元格中写入“未点检”
sheet.cell(row=1, column=cell.column+1).value = '未点检'
# 保存工作薄1
workbook1.save('workbook1.xlsx')
# 将工作薄1中的数据写入列表框中
root = tk.Tk()
unique_frame = tk.Frame(root, bg='white')
unique_frame.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5)
button = tk.Button(unique_frame, text="刷新")
button.pack(side=tk.LEFT, padx=5)
unique_label = tk.Label(unique_frame, text="工作表名")
unique_label.pack(side=tk.LEFT, padx=5)
unique_listbox = tk.Listbox(unique_frame)
unique_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
for sheet_name in sheet_names:
sheet = workbook1[sheet_name]
# 将工作表名添加到列表框中
unique_listbox.insert(tk.END, sheet_name)
# 遍历第一行的所有单元格
for cell in sheet[1]:
# 将单元格的值添加到列表框中
unique_listbox.insert(tk.END, cell.value)
root.mainloop()
```
需要注意的是,代码中的文件路径需要根据实际情况进行修改。同时,代码中还涉及到一些 Python 库和 GUI 开发的知识,需要有一定的基础才能理解和实现。
阅读全文