if cell_value is not None and cell_value != '': for row in sheet.iter_rows(min_row=1): if row[2].value == today and row[8].value == sheet_name: datetime_obj = datetime.datetime.strptime(row[3].value, '%H:%M:%S') row_time = datetime_obj.time() if start_time_1 <= row_time <= end_time_1 and start_time_1 <= current_time <= end_time_1: filtered_rows.append(row) elif start_time_2 <= row_time or current_time <= end_time_2: filtered_rows.append(row) label = self.unique_listbox.grid_slaves(row=i // 3, column=i % 3)[0] if filtered_rows: label.config(text=f"{sheet_name} - 已點檢", fg="green") else: label.config(text=f"{sheet_name} - 未點檢", fg="red")
时间: 2024-02-14 21:32:47 浏览: 23
这段代码主要的功能是对指定路径下的一个Excel文件进行读取和筛选,然后根据筛选结果更新UI界面上的标签文本。具体来说,它首先检查指定的Excel文件是否存在,如果存在则读取该文件,否则创建一个新文件。然后对文件中的每个工作表进行遍历,检查是否存在特定日期和工作表名字的记录,如果存在则比较记录中的时间是否在早上8点到晚上7点之间或者在晚上7点到早上7点之间,如果是则将该记录加入到filtered_rows列表中。最后,根据filtered_rows列表是否为空来更新UI界面上的标签文本,如果列表为空则表示该工作表未被检查,标签文本为"未點檢",否则标签文本为"已點檢"。
相关问题
filepath = os.path.join(pinjie, self.la + '.xlsx') for i, sheet_name in enumerate(self.sheet_names): filtered_rows = [] if os.path.exists(filepath): workbook = xl.load_workbook(filepath) sheet = workbook.active today = datetime.datetime.now().strftime('%Y/%m/%d') cell_value = sheet.cell(row=1, column=1).value if cell_value is not None and cell_value != '': for row in sheet.iter_rows(min_row=1): if row[2].value == today and row[8].value == sheet_name: filtered_rows.append(row)在這個代碼添加一個獲取當前時間,在篩選日期后再添加一個篩選第4列早上8點到下午19點的時間
可以在代码中加入以下内容来实现你的需求:
```
import datetime
...
start_time = datetime.time(8, 0, 0) # 早上8点
end_time = datetime.time(19, 0, 0) # 下午7点
...
if row[2].value == today and row[8].value == sheet_name:
row_time = row[3].value.time() # 获取时间,假设时间在第4列
if start_time <= row_time <= end_time:
filtered_rows.append(row)
```
这样就可以在筛选日期的基础上再筛选出时间在早上8点到下午7点之间的数据了。
import osimport openpyxldef extract_subtables(folder_path): subtables = [] for filename in os.listdir(folder_path): if filename.startswith('2-') and filename.endswith('.xlsx'): file_path = os.path.join(folder_path, filename) workbook = openpyxl.load_workbook(file_path) for sheet_name in workbook.sheetnames: if sheet_name.startswith('2-'): sheet = workbook[sheet_name] subtable = [] for row in sheet.iter_rows(min_row=2): if not all([cell.value is None for cell in row]): subtable.append([cell.value for cell in row]) elif subtable: subtables.append(subtable) subtable = [] if subtable: subtables.append(subtable) return subtables,给出完整代码
好的,下面是完整代码。
```python
import os
import openpyxl
def extract_subtables(folder_path):
subtables = []
for filename in os.listdir(folder_path):
if filename.startswith('2-') and filename.endswith('.xlsx'):
file_path = os.path.join(folder_path, filename)
workbook = openpyxl.load_workbook(file_path)
for sheet_name in workbook.sheetnames:
if sheet_name.startswith('2-'):
sheet = workbook[sheet_name]
subtable = []
for row in sheet.iter_rows(min_row=2):
if not all([cell.value is None for cell in row]):
subtable.append([cell.value for cell in row])
elif subtable:
subtables.append(subtable)
subtable = []
if subtable:
subtables.append(subtable)
return subtables
if __name__ == '__main__':
folder_path = 'path/to/your/folder'
subtables = extract_subtables(folder_path)
for subtable in subtables:
print(subtable)
```
你只需要将`path/to/your/folder`替换成你要处理的文件夹路径即可。在运行代码后,会打印出所有提取出的子表。如果你要将子表保存到文件中,可以使用`openpyxl`库提供的写入Excel文件的方法。