我怎样才能在Excel中填充颜色特定的单元格?

我有这个代码,它工作正常。 但问题是,我必须做很多if-elif的事情。 我需要更高雅的方式

wb = openpyxl.load_workbook('/New.xlsx') ws = wb.active ws = wb.get_sheet_by_name(u'И') redFill = PatternFill(start_color='FFFF00',end_color='FFFF00',fill_type='solid')#желтый redFill2 = PatternFill(start_color='FF4500',end_color='FF4500',fill_type='solid')#красный redFill3 = PatternFill(start_color='FFA500',end_color='FFA500',fill_type='solid')#оранжевый redFill4 = PatternFill(start_color='228B22',end_color='228B22',fill_type='solid')#зеленый if ws.cell(row=2, column=4).value=='50,00%': ws['E2'].fill = redFill2 elif ws.cell(row=2, column=4).value=='75,00%': ws['E2'].fill = redFill3 elif ws.cell(row=2, column=4).value=='100,00%': ws['E2'].fill = redFill4 wb.save('/New.xlsx') 

我想创build这样的东西:

 def ws_f(row,column): if ws.cell(row=row, column=column).value=='50,0%': return ws.cell.fill = redFill2 elif ws.cell(row=row, column=column).value=='75,0%': return ws.cell.fill=redFill3 elif ws.cell(row=row, column=column).value=='100,0%': return ws.cell.fill=redFill4 ws_f(3,5) 

但是它不能用def ws_f方式工作。 有什么build议么?

根据我对于openpyxl的经验,格式化函数就像你想要的那样需要工作表作为参数传入。

 wb = openpyxl.load_workbook('/New.xlsx') ws = wb.active ws = wb.get_sheet_by_name(u'И') redFill = PatternFill(start_color='FFFF00',end_color='FFFF00',fill_type='solid')#желтый redFill2 = PatternFill(start_color='FF4500',end_color='FF4500',fill_type='solid')#красный redFill3 = PatternFill(start_color='FFA500',end_color='FFA500',fill_type='solid')#оранжевый redFill4 = PatternFill(start_color='228B22',end_color='228B22',fill_type='solid')#зеленый def ws_f(wks, row, column): if wks.cell(row=row, column=column).value=='50,0%': wks.cell(row=row,column=column).fill = redFill2 elif wks.cell(row=row, column=column).value=='75,0%': wks.cell(row=row,column=column).fill = redFill3 elif wks.cell(row=row, column=column).value=='100,0%': wks.cell(row=row,column=column).fill = redFill4 wsf(ws, 3, 4) wb.save("File_out.xlsx") 

让variables不会影响上面的外层范围的ws也更好,所以我把它命名为wks 。 您不希望在函数中调用return ,因为输出会期望传回的值,而此格式只是在单元本身上运行。 我testing了它,它为我工作。 希望这有助于!