Python openpyxl读取单元格字体颜色过程解析
程序员文章站
2024-02-02 23:21:04
问题
我试图打印some_cell.font.color.rgb并得到各种结果。
对于一些人,我得到了我想要的东西(比如“ ff000000”),但对于其他人,它给了我...
问题
我试图打印some_cell.font.color.rgb并得到各种结果。
对于一些人,我得到了我想要的东西(比如“ ff000000”),但对于其他人,它给了我value must be type 'basetring'。我假设后者是因为我实际上没有为这些单元格定义字体颜色。
我正在使用openpyxl 2.2.2
解决方案
我认为这是openpyxl中的一个错误,我认为你应该在报告。
调试以下代码(当然使用):
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')
这来自文件中类typed()的_repr_()openpyxl/descriptors/base.py
。未初始化值时会给出此消息。请注意,“indexed”和“auto”也未设置。
但是这些应该ws['a4']是在执行访问代码时设置的。
注意:消息中的细微差别:'str'而不是'basestring'可能归因于我使用python 3或不太可能使用openpyxl 2.2.3
如果我应该在我的示例中添加其他一些额外的代码,那么至少应该表明这一点。
另请参见其中一个开发人员似乎在这么多单词中说同样的事情。
编辑:
其他一些事情可能值得关注。首先,您可以设置一个值然后读取它,例如您可以这样做:
c.font.color.rgb = "ff000000"
其次,如果您c.font.color.rgb在布尔值中测试,它将看起来像已设置的值。那是
if c.font.color: print("yes")
将打印“是”。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。