如何使用python xlsxwriter有条件地格式化单元格值

我想要输出条件格式的Excel工作表,其中每个列的条件是依赖于第一行的值。 使用所示出的dataframe单元A2,A4,B3,B4,C4,C5,D4和E4将被突出显示为红色。

import xlsxwriter data = [ [1, 1, 5, 'A', 1], [1, 4, 4, 'B', 0], [2, 1, 5, 2, 2], [1, 1, 5, 'A', 1], ] wb = xlsxwriter.Workbook('testout.xlsx') ws = wb.add_worksheet() formatyellow = wb.add_format({'bg_color':'#F7FE2E'}) formatred = wb.add_format({'bg_color':'#FF0000'}) i=0 for row, row_data in enumerate(data): print (row) print (row_data) ws.write_row(row, 0, row_data) i += 1 ws.conditional_format(0,1,4,5, {'type':'text', 'criteria':'containing', 'value':'B', 'format':formatyellow}) ws.conditional_format(0,1,4,5, {'type':'cell', 'criteria':'==', 'value':'A$1', 'format':formatred}) 

这是我得到的: 得到这个:

这是我想要得到的: 为此:

有没有办法使用xlsxwriter完成这个工作?

在改变ws.conditional_format的索引后,我能够产生所需的结果。 请记住, xslxwriter使用零索引,所以row=0col=0对应于单元格A0 。 此外,我不得不添加wb.close()函数的结尾

 import xlsxwriter data = [ [1, 1, 5, 'A', 1], [1, 4, 4, 'B', 0], [2, 1, 5, 2, 2], [1, 1, 5, 'A', 1], ] wb = xlsxwriter.Workbook('testout.xlsx') ws = wb.add_worksheet() formatyellow = wb.add_format({'bg_color':'#F7FE2E'}) formatred = wb.add_format({'bg_color':'#FF0000'}) i=0 for row, row_data in enumerate(data): print (row) print (row_data) ws.write_row(row, 0, row_data) i += 1 ws.conditional_format(1,0,3,4, {'type':'text', #Start from row 1 ("B") and column 0 (1) 'criteria':'containing', 'value':'B', 'format':formatyellow}) ws.conditional_format(1,0,3,4, {'type':'cell', 'criteria':'==', 'value':'A$1', 'format':formatred}) wb.close() 

输出:

产量