如何用openpyxl循环Excel含数据行并处理逗号分隔单元格值
解决方案
核心思路
遍历A列有数据的行,将C、D列的逗号分隔值分别拆分为列表,再通过配对关联对应元素(如March对应16)。
代码实现
基于你已加载的工作表对象,添加以下逻辑:
from openpyxl import load_workbook wb2 = load_workbook('Book1.xlsx') ws4 = wb2["Temp"] # 遍历所有行,仅处理A列非空的行 for row in ws4.iter_rows(min_row=1, values_only=True): a_val, _, c_val, d_val = row # 解构行数据:A列是第1位,C列第3位,D列第4位 # 过滤A列无数据的行 if not (a_val and str(a_val).strip()): continue # 拆分并清理C、D列的逗号分隔值 c_items = [item.strip() for item in str(c_val).split(',') if item.strip()] d_items = [item.strip() for item in str(d_val).split(',') if item.strip()] # 关联对应元素(若列表长度不一致,会以较短的为准) for c_item, d_item in zip(c_items, d_items): # 这里替换为你需要的输出逻辑,比如写入新表格、保存到字典等 print(f"{c_item} 对应 {d_item}") # 若需要将结果写入新工作表,可添加以下逻辑 # new_ws = wb2.create_sheet(title="Result") # new_ws.append(["关联项", "对应值"]) # for c_item, d_item in zip(c_items, d_items): # new_ws.append([c_item, d_item]) # wb2.save('Book1.xlsx')
关键细节
iter_rows(values_only=True):直接获取单元格的数值,无需处理Cell对象,简化代码strip():清理每个拆分元素的前后空白,避免逗号后带空格导致的无效内容- 非空判断:确保只处理A列存在有效数据的行
- 长度校验(可选):如果需要严格保证C、D列的元素数量一致,可添加长度检查:
if len(c_items) != len(d_items): print(f"警告:行内C、D列元素数量不匹配,C列{len(c_items)}个,D列{len(d_items)}个") else: for c_item, d_item in zip(c_items, d_items): print(f"{c_item} 对应 {d_item}")
内容的提问来源于stack exchange,提问作者Behseini
相关产品推荐
相关产品推荐

