Solución:
Creo que esto es un error en openpyxl y creo que deberías informarlo aquí.
Depurando el siguiente código (con trepan3k por supuesto):
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
c = ws['A4'] # cell gets created here
print(ws['A4'].font.color)
Yo obtengo:
Color(rgb=Value must be type 'str', indexed=Value must be type 'int', auto=Value must be type 'bool', theme=1, tint=0.0, type="theme")
y esto viene de _repr_ () de clase Mecanografiado () en archivo openpyxl/descriptors/base.py
. Este mensaje se da cuando no se ha inicializado un valor. Tenga en cuenta que “indexado” y “automático” tampoco se han configurado.
Pero estos presumiblemente deberían haberse establecido cuando el código para el acceso de ws['a4']
se realizó.
Nota: la ligera diferencia en el mensaje: ‘str’ en lugar de ‘basetring’ probablemente se deba al hecho de que estaba usando Python 3 o menos probablemente openpyxl 2.2.3
Y si hay algún otro código adicional que debería haber agregado en mi ejemplo, entonces al menos https://openpyxl.readthedocs.org/en/latest/index.html debería indicarlo.
Consulte también el estilo de celda openpyxl que no informa correctamente cuando uno de los desarrolladores parece decir lo mismo con tantas palabras.
Editar:
Puede ser interesante tener en cuenta un par de otras cosas. Primero, puedes colocar un valor y luego leerlo, por ejemplo, puede hacer esto:
c.font.color.rgb = "FF000000"
En segundo lugar, si prueba c.font.color.rgb
en un booleano, parecerá que se ha establecido un valor. Es decir
if c.font.color: print("yes")
imprimirá “sí”.