需求介绍

本人的excel数据是之前通过pandas导出的,现在有个需求就是对excel某一列的每个单元格的值进行判断,如果这个值在某一区间内,那么就给这个单元格填充响应的背景颜色。在使用pandas的过程中发现pandas好像并不能实现此功能,所以在假期期间学习了一下openpyxl,使用它操作excel真是太爽了。

数据形式

代码

from openpyxl import load_workbookfrom openpyxl.styles import PatternFillwb = load_workbook("airquality.xlsx")# 默认选择第一张sheet表ws = wb.active# 选取数据区cells = ws.iter_rows(min_row=2, min_col=6, max_col=6)# 构建颜色对象,start_color表示前景色,end_color表示背景色。green_fill = PatternFill("solid", start_color='00E400')yellow_fill = PatternFill("solid", start_color='FFFF00')orange_fill = PatternFill('solid', start_color='FF7E00')red_fill = PatternFill('solid', start_color='FF0000')pink_fill = PatternFill('solid', start_color='99004C')maroon_fill = PatternFill('solid', start_color='7E0023')for i in cells:    # 每行的内容是元组,每个元组只有一个单元格,所以取第一项的value,然后转为int型    value = int(i[0].value)    if value <= 50:        i[0].fill = green_fill    elif 50 < value <= 150:        i[0].fill = yellow_fill    elif 150 < value <= 200:        i[0].fill = orange_fill    elif 200 < value <= 250:        i[0].fill = pink_fill    else:        i[0].fill = maroon_fillwb.save("new_sheet.xlsx")wb.close()

最后处理过后的excel为这个样子。