credo che questo sia un bug in openpyxl e penso che si dovrebbe segnalarlo here.
Debug il seguente codice (con trepan ovviamente):
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
c = ws['A4'] # cell gets created here
print(ws['A4'].font.color)
ottengo:
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')
e questo è venuta da _repr_() di classe digitati() in file openpyxl/descriptors/base.py
. Questo messaggio viene dato quando un valore non è stato inizializzato. Si noti che "indicizzati" e "auto" non sono stati impostati.
Ma questi presumibilmente avrebbero dovuto essere impostati quando è stato eseguito il codice per l'accesso di ws['a4']
.
Nota: la leggera differenza di un messaggio: 'str' invece di 'basestring' è probabilmente attribuibile al fatto che stavo usando Python 3 o meno probabile openpyxl 2.2.3
E se c'è qualche altro codice aggiuntivo dovrebbe essere aggiunto nel mio esempio, quindi almeno https://openpyxl.readthedocs.org/en/latest/index.html dovrebbe indicarlo.
Vedere anche openpyxl cell style not reporting correctly dove uno degli sviluppatori sembra dire la stessa cosa in così tante parole.
Edit:
Un paio di altre cose può essere interessante notare. In primo luogo, è possibile impostare un valore e poi leggerlo, per esempio, si può fare questo:
c.font.color.rgb = "FF000000"
In secondo luogo, se si prova c.font.color.rgb
in un valore booleano che sarà simile è stato impostato un valore. Quello è
if c.font.color: print("yes")
stamperà "sì".
Cosa ti aspetti per le celle in cui non hai impostato il colore del carattere? – satoru
Puoi incollare l'intera traccia dello stack quando si lamenta? Il valore deve essere di tipo 'basestring'' – satoru