xlsxwriter:"inf" 值如何不着色?

xlsxwriter: how "inf" value can be uncolored?

使用 python 包 "xlsxwriter",我想突出显示以下条件范围内的单元格; 值 > 1 或值 <-1 但是,某些单元格具有 -inf/inf 值,并且它也为它们填充颜色(黄色)。有什么方法可以取消突出显示它们吗? 我试过 "conditional_format" 函数来取消它们的颜色,但它不起作用。 output example

format1 = workbook.add_format({'bg_color':'#FFBF00'}) #yellow
format2 = workbook.add_format({'bg_color':'#2E64FE'}) #blue
format3 = workbook.add_format({'bg_color':'#FFFFFF'}) #white

c_fold=[data.columns.get_loc(col) for col in data.columns if col.startswith("fold")]
c_fold.sort() 


l=len(data)+1
worksheet.conditional_format(1,c_fold[0],l,c_fold[-1], {'type':'cell',
                                             'criteria' : '>',
                                             'value':1,
                                             'format':format1,
                                             })

worksheet.conditional_format(1,c_fold[0],l,c_fold[-1], {'type':'cell',
                                             'criteria' : '<',
                                             'value':-1,
                                             'format':format2,
                                             })

worksheet.conditional_format(1,c_fold[0],l,c_fold[-1], {'type':'text',
                                             'criteria' : 'begins with',
                                             'value':"-inf",
                                             'format':format3,
                                             })

提前致谢

这会解决

worksheet.conditional_format(1,c_fold[0],l,c_fold[-1], {'type':'text',
                                         'criteria' : 'containing',
                                         'value':"-inf",
                                         'format':format3,
                                         })

在很多情况下,问题 "how do I get this to work with XlsxWriter" 的答案与问题 "how do I get this to work with Excel" 的答案相同。

如果您尝试 Excel 中的示例,您会发现您得到与 XlsxWriter 示例相同的结果。 > 条件适用于 Excel 中的 -inf,因此它突出显示为浅橙色。以下 containing 条件也匹配的事实不会覆盖第一个匹配条件,因为 Excel 按照用户提供它们的顺序应用它们。

Excel 和 XlsxWriter 中的解决方案是更改应用规则的顺序,如下所示:

import xlsxwriter

workbook = xlsxwriter.Workbook('conditional_format.xlsx')
worksheet1 = workbook.add_worksheet()

# Add some formats to use in the conditional formats.
format1 = workbook.add_format({'bg_color': '#FFBF00'})
format2 = workbook.add_format({'bg_color': '#2E64FE'})
format3 = workbook.add_format({'bg_color': '#FFFFFF'})

# Write some sample data.
worksheet1.write('A1', 2)
worksheet1.write('A2', '-inf')
worksheet1.write('A3', -2)

# Write a conditional formats over the same range.
worksheet1.conditional_format('A1:A3', {'type': 'text',
                                        'criteria': 'begins with',
                                        'value': "-inf",
                                        'format': format3})

worksheet1.conditional_format('A1:A3', {'type': 'cell',
                                        'criteria': '>',
                                        'value': 1,
                                        'format': format1})

worksheet1.conditional_format('A1:A3', {'type': 'cell',
                                        'criteria': '<',
                                        'value': 1,
                                        'format': format2})

workbook.close()

输出: