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 09:41:39 浏览: 44
以下是一个简单的实现代码,可以实现你的需求:
```python
import openpyxl
from datetime import datetime
# 获取工作薄1中所有工作表名,写入列表1中
wb1 = openpyxl.load_workbook('workbook1.xlsx')
sheet_names = wb1.sheetnames
list1 = sheet_names
# 打开工作薄2,获取当前工作表
wb2 = openpyxl.load_workbook('workbook2.xlsx')
sheet = wb2.active
# 获取当前时间
now = datetime.now()
hour = int(now.strftime('%H'))
# 根据时间筛选内容
if hour >= 8 and hour <= 19:
filtered_values = [r[6].value for r in sheet.rows if r[6].value == 'D']
else:
filtered_values = [r[6].value for r in sheet.rows if r[6].value == 'N']
# 根据日期筛选整行数据,写入字典
filtered_data = {}
for row in sheet.rows:
if row[2].value == now.strftime('%Y-%m-%d'):
filtered_data[row[0].value] = [cell.value for cell in row]
# 根据列表1的工作表名的内容去字典中的第1列判断是否有相同内容
# 如果有就在列表1相应数据后面写上已点检,没有就写为点检
for i in range(len(list1)):
sheet_name = list1[i]
if sheet_name in filtered_data.keys():
list1[i] += ' 已点检'
else:
list1[i] += ' 点检'
# 将列表1的数据显示到列表框中
for item in list1:
self.unique_listbox.insert(tk.END, item)
```
需要注意的是,这只是一个简单的实现,实际情况可能更加复杂,需要根据具体需求进行调整。同时,此代码也需要配合Tkinter等GUI库使用才能实现列表框的显示。
阅读全文