如何在Excel中按条件替换文本?openpyxl获取正确单元格坐标方法
问题解决:openpyxl获取可直接调用的单元格坐标实现关键词替换
错误原因
你原有代码中通过zip(sheet_obj.values, sheet_obj.rows)拿到的rows是当前行所有单元格对象组成的元组,不是单个单元格的合法索引格式,所以无法直接用sheet_obj[rows]的方式赋值。
修正方案
你可以在遍历行的同时同步拿到行列索引,直接对匹配到关键词的单元格对象赋值即可,不需要额外拼接坐标。如果确实需要获取标准坐标格式,也可以直接调用单元格的内置属性获取。
可直接运行的修正代码
import openpyxl path = "./BoldDemo.xlsx" wb_obj = openpyxl.load_workbook(path) sheet_obj = wb_obj.active # 遍历所有行,start=1适配openpyxl从1开始的索引规则 for row in sheet_obj.iter_rows(): # 遍历当前行的每个单元格 for cell in row: # 非空判断避免空值报错,再匹配关键词 if cell.value and "Hello" in str(cell.value): # 直接修改单元格对象的value属性即可完成替换 cell.value = "Hello test This is a Replace Text" # 如需获取符合调用规范的单元格坐标,调用coordinate属性即可,返回格式如"A1""B3" print(f"已完成替换的单元格坐标:{cell.coordinate}") # 所有修改完成后统一保存,不要放在循环内重复保存提升运行效率 wb_obj.save(path)
补充说明
如果需要通过坐标主动定位单元格,直接使用cell.coordinate拿到的坐标字符串即可,调用格式为sheet_obj[单元格坐标字符串],和手动写sheet_obj["A1"]的效果完全一致。
内容的提问来源于stack exchange,提问作者user11578023
相关产品推荐
相关产品推荐

