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 13:41:59 浏览: 47
好的,根据你的要求,我来给你提供一份代码实现:
```
import datetime
import openpyxl
# 获取工作薄1中所有工作表名
wb1 = openpyxl.load_workbook('工作薄1.xlsx')
sheets1 = wb1.sheetnames
# 打开另一个工作薄2
wb2 = openpyxl.load_workbook('工作薄2.xlsx')
ws2 = wb2.active
# 获取当前时间
now = datetime.datetime.now().strftime('%H:%M')
# 判断时间段并筛选数据
if '08:00' <= now <= '19:00':
data_col = 7
data_value = 'D'
else:
data_col = 7
data_value = 'N'
# 筛选日期为当前日期的数据并写入字典中
data_dict = {}
today = datetime.datetime.now().strftime('%Y/%m/%d')
for row in ws2.iter_rows(min_row=2, min_col=3, max_col=3):
if row[0].value is not None and row[0].value.strftime('%Y/%m/%d') == today:
row_data = [cell.value for cell in ws2[row[0].row]]
if row_data[data_col - 1] == data_value:
data_dict[row_data[0]] = row_data
# 判断列表1中的内容是否已经点检,并将结果写入列表
unique_list = []
for sheet_name in sheets1:
if sheet_name in data_dict.keys():
if '已点检' in data_dict[sheet_name]:
unique_list.append(sheet_name + ' 已点检')
else:
unique_list.append(sheet_name + ' 未点检')
else:
unique_list.append(sheet_name + ' 未点检')
# 显示数据到列表框中
for item in unique_list:
self.unique_listbox.insert(tk.END, item)
```
这份代码实现了你的要求,具体的实现步骤如下:
1. 首先,打开工作薄1并获取其中所有工作表名;
2. 然后,打开工作薄2并获取当前时间,根据当前时间判断要筛选哪些数据;
3. 接着,筛选日期为当前日期的数据并写入字典中;
4. 最后,根据列表1中的内容和字典中的数据进行匹配,判断是否已经点检,并将结果写入列表。
注意,代码中的`self`指代的是当前类的实例化对象,如果你在函数外部使用该代码,需要根据实际情况进行修改。另外,代码中的文件名和数据筛选的列数和内容,都是根据你的要求进行设置的,如果需要修改,可以根据实际情况进行调整。
阅读全文