如何为openpyxl生成的输出Excel文件高亮行与列?
解决方法
要实现输出文件中行和列的高亮效果,你可以借助openpyxl的样式模块PatternFill来设置单元格填充颜色。以下是修改后的完整代码:
from openpyxl import load_workbook, Workbook from openpyxl.styles import PatternFill def find(wb, string): res = [] for ws in wb: for row in ws.values: for value in row: if value is not None and string in str(value): res.append(value) return res if __name__ == '__main__': # 使用原始字符串避免路径转义问题 wb = load_workbook(r"C:\Book1.xlsx") values = find(wb, "NAS019") wb = Workbook() ws = wb.active # 定义高亮填充样式(这里用黄色,可根据需求修改颜色代码) highlight_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid") for value in values: ws.append([value]) # 获取当前写入的行号 current_row = ws.max_row # 高亮当前整行的所有单元格 for cell in ws[current_row]: cell.fill = highlight_fill # 若需要高亮整个A列(含空行),可替换为下面的代码: # ws.column_dimensions['A'].fill = highlight_fill # 保存文件,同样用原始字符串避免转义 wb.save(filename=r"C:\Book2.xlsx")
关键说明:
- 样式自定义:通过
PatternFill创建纯色填充样式,你可以替换start_color和end_color的十六进制值更改高亮颜色(比如"FFC0CB"对应粉色)。 - 行高亮逻辑:每次写入数据后,获取当前行号,遍历该行所有单元格并应用高亮样式,实现整行高亮。
- 列高亮选择:如果需要高亮整个A列(包括空行),直接启用注释里的
column_dimensions代码即可;若只需要高亮有数据的列区域,当前整行高亮的逻辑已经覆盖了对应列的单元格。 - 路径处理:使用原始字符串
r"路径"避免Windows路径中的转义字符问题,防止代码报错。
内容的提问来源于stack exchange,提问作者Allison
相关产品推荐
相关产品推荐

