Python 獲取工作薄1中所有工作表名,寫入一個列表1中,在打開另一個工作薄2,獲取當前工作表,獲取當前時間判斷是在08:00到19:00之内的就在第7列選出内容是D的内容,如果是在20:00到07:00之内的在7列選出内容是N的内容,然後在第3列獲取日期為當天相應的日期整行數据寫入另一個列表2中,然後用列表1的工作表名的内容去列表2中第1列判斷是否有相同内容,如果有就在列表1相應數據後面寫上已點檢,沒有就寫為點檢,最後將列表1的數據顯示到這個列表框中# 创建Frame来放置唯一值面板 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:32 浏览: 17
好的,您的问题是如何用 Python 获取工作薄中的数据并进行处理,最终将结果显示在一个列表框中。
首先,我们需要使用 Python 的 openpyxl 库来打开 Excel 工作薄,并获取工作表的名称。可以使用以下代码:
```python
from openpyxl import load_workbook
# 打开工作薄1
wb1 = load_workbook('工作薄1.xlsx')
# 获取所有工作表的名称
sheet_names = wb1.sheetnames
```
接下来,我们需要打开另一个工作薄2,并获取当前工作表的名称和当前时间。可以使用以下代码:
```python
import datetime
# 打开工作薄2
wb2 = load_workbook('工作薄2.xlsx')
# 获取当前工作表的名称
sheet_name = wb2.active.title
# 获取当前时间
now_time = datetime.datetime.now().strftime('%H:%M')
```
接着,我们需要根据当前时间来判断应该选择哪一列的数据。可以使用以下代码:
```python
if '08:00' <= now_time <= '19:00':
column = 7
value = 'D'
else:
column = 7
value = 'N'
```
然后,我们需要在第三列中获取当天的日期,并将整行数据写入另一个列表2中。可以使用以下代码:
```python
# 获取当天的日期
today = datetime.datetime.now().strftime('%Y-%m-%d')
# 遍历第三列,查找符合条件的数据,并将整行数据写入列表2中
data_list = []
for row in wb2[sheet_name].iter_rows(min_row=2, min_col=3, max_col=3):
if row[0].value == today:
data_list.append([cell.value for cell in row])
```
最后,我们需要使用列表1的工作表名在列表2中查找是否有相同的内容,并在列表1中相应数据后面写上已点检或未点检,然后将列表1的数据显示在列表框中。可以使用以下代码:
```python
# 遍历列表1,查找相应的数据并进行处理
for sheet_name in sheet_names:
for row in wb2[sheet_name].iter_rows(min_row=2, min_col=1, max_col=1):
if row[0].value == sheet_name:
if [cell.value for cell in row] in [data[0] for data in data_list]:
result = '已点检'
else:
result = '未点检'
# 在列表1相应数据后面写上已点检或未点检
wb1[sheet_name].cell(row=row[0].row, column=2).value = result
# 将列表1的数据显示在列表框中
self.unique_listbox.delete(0, tk.END)
for sheet_name in sheet_names:
self.unique_listbox.insert(tk.END, sheet_name + ' ' + wb1[sheet_name].cell(row=1, column=2).value)
```
以上就是实现您所需功能的代码,您可以根据自己的实际情况进行修改。