向Cell OpenPyXL添加背景颜色

dyl*_*lan 3 python excel openpyxl

我试图让它成为我的代码在"存在"时在单元格上发出绿色背景的地方,如果它是"缺席"则在单元格上发出红色背景.这是我的代码.

ws1.cell(column=1, row=t, value="%s" % blue_student_list)
if (student_check(i)):
    ws1.cell(column=2, row=t, value="%s" % "Present")
else:
    ws1.cell(column=2, row=t, value="%s" % "Absent")
Run Code Online (Sandbox Code Playgroud)

这段代码完美无缺,我只是想知道如何添加单元格后面的背景颜色.

Jea*_* T. 12

正如@Charlie Clark(openpyxl 的合著者)所暗示的那样,条件格式可能是更好的方法。官方文档中的更多信息

如果要更改背景颜色,从更新的版本开始,关键字bgcolor似乎不起作用(在我的情况下,单元格的颜色最终变为黑色)。

相反,您可以使用start_colorfgColor。例如,两种解决方案都有效:

from openpyxl.styles import PatternFill
from openpyxl.styles.colors import YELLOW

sheet['A1'].fill = PatternFill(start_color="FFC7CE", fill_type = "solid")
sheet['A1'].fill = PatternFill(fgColor=YELLOW, fill_type = "solid")
Run Code Online (Sandbox Code Playgroud)

  • 从[代码](https://foss.heptapod.net/openpyxl/openpyxl/-/blob/branch/3.0/openpyxl/styles/colors.py)看来,YELLOW当前已被禁用作为快捷方式常量 (2认同)

cri*_*fan 9

在这里openpyxl 2.5.3,上面的代码不起作用.

尝试后,下面的代码工作:

from openpyxl.styles import PatternFill
sheet['A1'].fill = PatternFill(start_color="FFC7CE", end_color="FFC7CE", fill_type = "solid")
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,“end_color”没有用。它可能仅在定义渐变时使用。您还可以使用“fgColor”(它恰好更短,因此更容易坚持较短的代码行)。 (4认同)

小智 5

来自文档

    from openpyxl.styles import PatternFill

    sheet['A1'].fill = PatternFill(bgColor="FFC7CE", fill_type = "solid")
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 对我来说,“bgColor”不起作用,但“start_color”和“end_color”不起作用 (2认同)