如何使用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=0
, col=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()
输出: