gpt4 book ai didi

python - 在 openpyxl 条件格式公式中使用多个单元格

转载 作者:行者123 更新时间:2023-12-04 03:58:52 24 4
gpt4 key购买 nike

我正在尝试用 Python 编写一个电子表格,它使用条件格式来查找一行中三个单元格中最大的单元格,并为其填充绿色。我已经能够比较两个单元格,但是在我能看到的 openpyxl 文档中,关于如何编写公式的信息很少,而且 StackOverflow 上关于这个问题的信息也很少。

对于两个按预期工作的单元格,我的代码如下:

sheet.conditional_formatting.add(f'G${row+iter_num}', CellIsRule(operator='greaterThan', \
formula=[f'H${row+iter_num}'], fill=greenfill))
sheet.conditional_formatting.add(f'H${row+iter_num}', CellIsRule(operator='greaterThan', \
formula=[f'G${row+iter_num}'], fill=greenfill))

{row+iter_num} 是必需的,因为它在 for 循环中使用。

为了对更多单元格进行比较,我尝试更改公式以包含 :

sheet.conditional_formatting.add(f'G${row+iter_num}', CellIsRule(operator='greaterThan', \
formula=[f'H${row+iter_num}' and f'I${row+iter_num}'], fill=greenfill))
sheet.conditional_formatting.add(f'H${row+iter_num}', CellIsRule(operator='greaterThan', \
formula=[f'G${row+iter_num}' and f'I${row+iter_num}'], fill=greenfill))
sheet.conditional_formatting.add(f'I${row+iter_num}', CellIsRule(operator='greaterThanOrEqual', \
formula=[f'G${row+iter_num}' and f'H${row+iter_num}'], fill=greenfill))

enter image description here

我不确定在这种情况下使用 是否合乎逻辑,但就像我说的那样,文档中的内容很少。我也无法使用任何比较来找出 G、H 和 I 中哪个在 Python 中最大,因为它们是由 excel 函数确定的。对于上图,每一行的绿色单元格应为 200、16、82、1890、150(第二个)、1025、527、392、150(第二个),每行应该只有一个绿色单元格。

最佳答案

如果直接在 Excel 中执行此操作,我会使用公式。您需要将相同的公式放入 Rule() 的公式参数中。这是一个完整的工作示例:

from openpyxl import Workbook
from openpyxl.formatting import Rule
from openpyxl.styles import Font, PatternFill, Border
from openpyxl.styles.differential import DifferentialStyle

wb = Workbook()
ws = wb.active

ws.append([1, 2, 3])
ws.append([3, 1, 2])
ws.append([2, 3, 1])
ws.append([1, 2, 3])
ws.append([3, 1, 2])
ws.append([2, 3, 1])

green_fill = PatternFill(bgColor="00FF00")
dxf = DifferentialStyle(fill=green_fill)
r = Rule(type="expression", dxf=dxf, formula=["=A1=MAX($A1:$C1)"])
ws.conditional_formatting.add('A1:C6', r)

# Save the file
wb.save("sample.xlsx")

关于python - 在 openpyxl 条件格式公式中使用多个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63372173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com