如何使用Python提取Excel中指定月份对应行范围的列值
实现方案
你可以基于已有的openpyxl代码补充行遍历逻辑即可,以下是适配你需求的完整代码:
固定行范围版本(匹配你说的传入2021.10取A5到A13的需求)
import openpyxl as oxl def get_month_data(target_month): load_excel = oxl.load_workbook('C:/Users/Homework.xlsx', data_only=True) load_sheet = load_excel['Sheet'] result = [] # openpyxl行号从1开始计数,range左闭右开,所以取5到13行要写range(5,14) for row_num in range(5, 14): cell_value = load_sheet[f"A{row_num}"].value result.append(cell_value) return result # 测试调用 print(get_month_data("2021.10"))
通用动态匹配版本(无需提前知道行范围,自动匹配所有前缀为目标月份的A列值)
如果后续月份对应的行范围会变化,可以用这个版本:
import openpyxl as oxl def get_month_data(target_month): load_excel = oxl.load_workbook('C:/Users/Homework.xlsx', data_only=True) load_sheet = load_excel['Sheet'] result = [] is_in_target_month = False # 遍历A列所有单元格 for row in load_sheet.iter_rows(min_col=1, max_col=1, values_only=True): cell_val = row[0] # 遇到目标月份开头的日期,标记进入目标范围 if cell_val and str(cell_val).startswith(target_month): is_in_target_month = True # 已经进入目标范围后,遇到下一个非空且不是目标月份开头的日期,结束遍历 elif is_in_target_month and cell_val and not str(cell_val).startswith(target_month): break # 目标范围内的所有值都加入结果 if is_in_target_month: result.append(cell_val) return result # 测试调用 print(get_month_data("2021.10"))
内容的提问来源于stack exchange,提问作者chlth
相关产品推荐
相关产品推荐

