我已经研究了很多stackoverflow问题,但似乎没有一个能解决我的问题。我使用Python和Openpyxl在一定条件下用红色填充整行。我做了所有必要的输入:
from openpyxl.styles import PatternFill, NamedStyle, Color
from openpyxl.styles.colors import RED
我的代码如下:
for cell in sheet[i]:
cell.style = NamedStyle(fill=PatternFill(patternType='solid',
fill_type='solid',
fgColor=Color(RED)))
当我要求打印第一次出现的细胞时,它给了我
<Cell 'Divers'.A4>
这就是我要找的东西。 但是,每次都会出现以下错误:“样式正常已存在”。在其余的代码中绝对没有单元格格式或样式,但Excel文件单元格确实已经用黄色填充。
关于如何解决这个问题的任何想法?提前感谢您的帮助。
答案 0 :(得分:3)
如果使用NamedStyle
,则需要传递名称。
red_foreground = NamedStyle(
name="RedForeground",
fill=PatternFill(
patternType='solid',
fill_type='solid',
fgColor=Color(RED)
)
)
由于您要将此NamedStyle
分配给多个单元格,因此将其注册到工作簿是有意义的。
wb.add_named_style(red_foreground)
然后你可以将它的应用程序更新到单元格,如下所示:
for cell in sheet[i]:
cell.style = "RedForeground"
答案 1 :(得分:0)
我也有这个问题,最后发现这是因为有2种样式,它们具有相同的名称。这通常是由于您使用copy.copy(style)
而引起的。然后,在更改style.name = 'newname'
之一后,它将起作用。