Python XlsxWriter 条件格式多个单元格以单个单元格中的值为条件

Python XlsxWriter conditional format several cells conditioned on the value in a single cell

如果第一列中的值大于 7,我想突出显示 table 的整行(不包括索引)。我目前可以使用以下代码突出显示第一个单元格:

import pandas as pd

df = pd.DataFrame({'A':[6, 4, 8, 2], 'B':[.3, .2, .4, .1], 'C': [12, 13, 14, 15]})

with pd.ExcelWriter('temp.xlsx', engine='xlsxwriter') as writer:
    workbook = writer.book
    df.to_excel(writer)
    worksheet = workbook.worksheets()[0]

    format_yellow = workbook.add_format({'bg_color': '#FFFF00'})

    worksheet.conditional_format('B2:B5', {'type':     'cell',
                                           'criteria': '>',
                                           'value':    7,
                                           'format':   format_yellow})

这是我得到的: get

这就是我想要的: want

为了弄清楚如何在 XlsxWriter 中执行条件格式,您需要先弄清楚如何在 Excel 中执行,然后将其应用于 XlsxWriter。

在这种情况下,您可能需要 formula 条件格式,而不是 cell 类型,并且您需要扩展格式适用的范围。像这样:

import pandas as pd

df = pd.DataFrame({'A': [6, 4, 8, 2],
                   'B': [.3, .2, .4, .1],
                   'C': [12, 13, 14, 15]})

with pd.ExcelWriter('temp.xlsx', engine='xlsxwriter') as writer:
    workbook = writer.book
    df.to_excel(writer)
    worksheet = workbook.worksheets()[0]

    format_yellow = workbook.add_format({'bg_color': '#FFFF00'})

    worksheet.conditional_format('B2:D5', {'type':     'formula',
                                           'criteria': '=$B2>7',
                                           'format':   format_yellow})

输出:

请注意,行的 absolute positioning of the column in $B2 so that it stays fixed over the conditional formatting range while the relative 位置允许更改。