【Python-办公自动化】1秒筛选12个月指定逻辑数值
# 导入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