Style Normal已经存在 - Python - OpenPyxl

时间:2017-07-12 10:44:43

标签: python openpyxl

我已经研究了很多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文件单元格确实已经用黄色填充。

关于如何解决这个问题的任何想法?提前感谢您的帮助。

2 个答案:

答案 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'之一后,它将起作用。