如何用for循环替代重复代码实现Openpyxl单元格颜色填充?
优化对角线单元格填充的循环实现
你可以通过循环遍历行号与列号一致的单元格来替代重复代码,同时提前复用填充样式对象,提升代码简洁性和可维护性。
方法1:直接通过行/列号定位单元格(推荐)
利用openpyxl的cell()方法直接通过行号、列号定位,无需拼接单元格字符串:
from openpyxl.styles import PatternFill # 提前创建黄色填充样式,避免重复实例化对象 yellow_fill = PatternFill(start_color='FFFF00', fill_type='solid') # 循环处理A1到D4的对角线单元格(行号=列号,范围1-4) for i in range(1, 5): ws.cell(row=i, column=i).fill = yellow_fill
方法2:拼接单元格坐标字符串
如果习惯用ws['A1']的格式,也可以通过ASCII码转换列字母:
from openpyxl.styles import PatternFill yellow_fill = PatternFill(start_color='FFFF00', fill_type='solid') for i in range(1, 5): # 64是ASCII码中'A'的前一位,i=1时chr(65)='A',以此类推 col_letter = chr(64 + i) cell_coord = f"{col_letter}{i}" ws[cell_coord].fill = yellow_fill
优化说明
- 避免了重复编写相同的填充赋值代码,后续如果需要扩展对角线范围(比如到E5),只需修改
range(1,5)为range(1,6)即可。 - 提前创建
yellow_fill对象,减少不必要的内存开销。
内容的提问来源于stack exchange,提问作者UnicornKKYY
相关产品推荐
相关产品推荐

