如何使用 python xlsxwriter 有条件地格式化单元格值
how to use python xlsxwriter to conditionally format on cell value
我想输出条件格式 Excel 工作表,其中每一列的条件取决于第一行中的值。使用显示的数据框单元格 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',
'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',
'format':formatred})
wb.close()
输出:
我想输出条件格式 Excel 工作表,其中每一列的条件取决于第一行中的值。使用显示的数据框单元格 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',
'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',
'format':formatred})
wb.close()
输出: