【Python-办公自动化】1秒筛选12个月指定逻辑数值

时间:2025-03-28 14:06:26
# 导入openpyxl库以加载和处理Excel文件 from openpyxl import load_workbook # 加载名为"每月物料表.xlsx"的Excel工作簿 wb = load_workbook(r"E:\办公自动化\按条件批量筛选\data\2022每月物料表.xlsx") # 初始化一个空字典,用于存储所有工作表中满足条件的数据,其中键是工作表的名称 data = {} # 获取工作簿中所有工作表的名称列表 sheet_names = wb.sheetnames # 遍历所有工作表的名称 for sheet_name in sheet_names: # 根据工作表名称获取当前工作表对象 ws = wb[sheet_name] # 初始化一个空列表,用于存储G列的数据 qty_list = [] # 遍历从第2行到最后一行的每一行(假设第1行是标题行) for row in range(2,ws.max_row+1): # 从当前行的G列获取数据 qty = ws['G'+str(row)].value # 将获取到的数据添加到qty_list列表中 qty_list.append(qty) # 使用enumerate函数对qty_list进行编号,编号和值作为元组存储在qty_idx列表中 qty_idx = list(enumerate(qty_list)) # 初始化一个空列表,用于存储数量大于1000所对应的行号(注意这里的行号将基于0索引) row_idx = [] # 遍历qty_idx列表,检查每个元素的数量是否大于1000 for i in range(len(qty_idx)): # 如果当前元素的数量大于1000 if qty_idx[i][1] > 1000: # 由于enumerate是从0开始编号的,但Excel行号从1开始,因此需要+2(假设从第2行开始计算数据,且需要调整为从1开始的行号) # 但这里实际上存在逻辑错误,应该直接+1,因为我们已经是基于1开始的行(第2行开始)进行计算 row_idx.append(qty_idx[i][0]+2) # 逻辑上应更正为 qty_idx[i][0] + 1 # 初始化一个空列表,用于存储满足条件(数量大于1000)的整行数据(以Excel单元格范围表示) data_morethan1K = [] # 遍历所有满足条件的行号 for i in row_idx: # 添加从列A到列I的整行数据范围到data_morethan1K列表中 # 注意:这里实际上没有提取数据内容,只是获取了单元格范围的字符串表示 data_morethan1K.append(ws['A'+str(i)+":"+'I'+str(i)]) # 将当前工作表满足条件的数据(以单元格范围字符串列表表示)添加到data字典中,以工作表名称为键 data[sheet_name]=data_morethan1K