Python 獲取工作薄1中所有工作表名,寫入一個列表1中,在打開另一個工作薄2,獲取當前工作表,獲取當前時間判斷是在08:00到19:00之内的就在第7列篩選出内容是D的内容,如果是在20:00到07:00之内的在7列篩選出内容是N的内容,然後在第3列篩選出日期為當天相應的日期整行數据寫入字典中,然後用列表1的内容去字典中的第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 15:41:41 浏览: 23
Python:获取当前时间
5星 · 资源好评率100%
好的,这是一个比较复杂的任务,需要分步骤来实现。下面是具体的代码实现:
```python
import openpyxl
import datetime
# 获取工作薄1中所有工作表名,写入列表1中
wb1 = openpyxl.load_workbook('工作薄1.xlsx')
sheet_names = wb1.sheetnames
list1 = [name for name in sheet_names]
# 打开工作薄2,获取当前工作表和当前时间
wb2 = openpyxl.load_workbook('工作薄2.xlsx')
sheet = wb2.active
now = datetime.datetime.now().time()
# 判断当前时间是在08:00到19:00之间还是在20:00到07:00之间
if now >= datetime.time(8, 0) and now <= datetime.time(19, 0):
# 在第7列筛选出内容是D的行
rows = []
for row in sheet.iter_rows(min_row=2, min_col=7, max_col=7):
if row[0].value == 'D':
rows.append(row[0].row)
else:
# 在第7列筛选出内容是N的行
rows = []
for row in sheet.iter_rows(min_row=2, min_col=7, max_col=7):
if row[0].value == 'N':
rows.append(row[0].row)
# 在第3列筛选出日期为当天相应的日期的行,并将整行数据写入字典中
data_dict = {}
for row in sheet.iter_rows(min_row=2, min_col=3, max_col=3):
if row[0].value.date() == datetime.datetime.now().date():
data_dict[row[0].row] = [cell.value for cell in sheet[row[0].row]]
# 用列表1的内容去字典中的第1列判断是否有相同内容
for name in list1:
for row in sheet.iter_rows(min_row=2, min_col=1, max_col=1):
if row[0].value == name:
if row[0].row in data_dict:
# 在列表1相应数据后面写上已点检
self.unique_listbox.insert(tk.END, f"{name} 已点检")
else:
# 在列表1相应数据后面写上未点检
self.unique_listbox.insert(tk.END, f"{name} 未点检")
```
注意:这段代码中的 `self` 可能需要根据具体的上下文进行修改。此外,上述代码中的日期判断均以当前日期为准,如果需要修改为其他日期,需要修改对应的代码部分。
阅读全文