Ответ 1
Я думаю, что это ошибка в openpyxl, и я думаю, вы должны сообщить об этом здесь.
Отладка следующего кода (с trepan, конечно):
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
c = ws['A4'] # cell gets created here
print(ws['A4'].font.color)
Я получаю:
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')
и это происходит от _repr_() класса Typed() в файле openpyxl/descriptors/base.py
. Это сообщение указывается, когда значение не было инициализировано. Обратите внимание, что "индексированные" и "авто" также не были установлены.
Но они, предположительно, должны были быть установлены, когда был выполнен код доступа к ws['a4']
.
Примечание: небольшая разница в сообщении: 'str' вместо 'basestring', вероятно, объясняется тем фактом, что я использовал Python 3 или менее вероятно openpyxl 2.2.3
И если в моем примере должен быть добавлен еще один дополнительный код, я должен добавить в него, по крайней мере https://openpyxl.readthedocs.org/en/latest/index.html.
См. также стиль ячейки openpyxl, не сообщая правильно, где один из разработчиков, кажется, говорит одно и то же во многих словах.
Edit
Может быть интересна и пара других вещей. Во-первых, вы можете установить значение, а затем прочитать его, например, вы можете сделать это:
c.font.color.rgb = "FF000000"
Во-вторых, если вы проверите c.font.color.rgb
в логическом режиме, это будет выглядеть так, как было установлено значение. Это
if c.font.color: print("yes")
напечатает "да".