Python: openpyxl how to read a cell font color

Related searches

I have tried to print some_cell.font.color.rgb and got various results.

For some I got what I want (like "FF000000"), but for others it gives me Value must be type 'basetring'. I assume that the latter is because I haven't actually defined the font color for these cells.

I'm using openpyxl 2.2.2


I think this is a bug in openpyxl and I think you should report it here.

Debugging the following code (with trepan3k of course):

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
c = ws['A4']  # cell gets created here
print(ws['A4'].font.color)

I get:

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')

and this is coming from _repr_() of class Typed() in file openpyxl/descriptors/base.py. This message is given when a value hasn't been initialized. Notice that "indexed" and "auto" also haven't been set.

But these presumably should have been set when the code for the access of ws['a4'] was performed.

Note: the slight difference in message: 'str' instead of 'basestring' is probably attributable to the fact that I was using Python 3 or less likely openpyxl 2.2.3

And if there's some other additional code should that I should have added in my example, then at least https://openpyxl.readthedocs.org/en/latest/index.html should indicate that.

See also openpyxl cell style not reporting correctly where one of the developers seems to say the same thing in so many words.

Edit:

A couple of other things may be of interest to note. First, you can set a value and then read it, for example you can do this:

c.font.color.rgb = "FF000000"

Second, if you test c.font.color.rgb in a boolean it will look like a value has been set. That is

if c.font.color: print("yes")

will print "yes".

Python: openpyxl how to read a cell font color, I think this is a bug in openpyxl and I think you should report it here. Debugging the following code (with trepan3k of course): from openpyxl� I have tried to print some_cell.font.color.rgb and got various results. For some I got what I want (like "FF000000"), but for others it gives me Value must be type 'basetring'. I assume that the latter is because I haven't actually defined the font color for these cells. I'm using openpyxl 2.2.2


I remember diving into the openpyxl source a while back to try and whittle down some styling issues. If you are opening a pre-existing excel file, cells will only be styled if they contain content. For example, if you have a .xlsx with A:A being highlighted yellow, but only A1 contains any text, then openpyxl will not have that highlighting info available for A2. And if (using openpyxl) you record some data to A2 then it will initiate that cell with no styling, and you'd end up with your A column being yellow everywhere except A2.

The difficulty I ran into was in monkey-patching the cell creation to determine if the sheet has styling that should be maintained on an inheritance basis. If you have A:A styled with thick border, and B:B styled with thin border, which do you inherit from?

Openpyxl - how to change font and color in a cell?, a cell? I thought, climbed to read the documentation, and drowned in it. from openpyxl.styles import colors#Connect colors for text and cells Tag: python,openpyxl. I have tried to print some_cell.font.color.rgb and got various results. For some I got what I want (like "FF000000"), but for others it gives me Value must be type 'basetring'. I assume that the latter is because I haven't actually defined the font color for these cells. I'm using openpyxl 2.2.2. Answer:


Possible alternative solution, is to test the types of cell.color and cell.color.rgb.

The following test seems to give cells which their colors set:

if cl.font.color != None and type(cl.font.color.rgb) == str:
   # where cl =  cell of interest
   rbg = cl.font.color.rgb  

It seems cell.font.color is None when style is used and type(cell.color.rgb) is <class 'openpyxl.styles.colors.RGB'> when no color is set.

Note: This solution has not been tested thoroughly and may not work for all cases.

Python-Working with fonts in excel using openpyxl module, How to change the font color in excel using openpyxl Font class. How to change #access the cell at row 1 and column 1 to a Cell() variable. Openpyxl - how to change font and color in a cell? I thought, climbed to read the documentation, and drowned in it. In the article - squeeze and examples;)


Openpyxl - Get the Font Color? - learnpython, Python will return the Font instance associated with that cell, something like Font( size=12, color='FFFFFF') . So you can read directly from it what the color is� In this step-by-step tutorial, you'll learn how to handle spreadsheets in Python using the openpyxl package. You'll learn how to manipulate Excel spreadsheets, extract information from spreadsheets, create simple or more complex spreadsheets, including adding styles, charts, and so on.


Python Examples of openpyxl.styles.Font, This page shows Python examples of openpyxl.styles.Font. Font(bold=True) sheet.cell(1, 1).font = font sheet.cell(1, 2).font = font sheet.cell(1, 3).font = font for f � >>> from openpyxl.styles import Font >>> font = Font (color = "FF0000") The alpha value refers in theory to the transparency of the colour but this is not relevant for cell styles. The default of 00 will prepended to any simple RGB value:


I am currently using openpyxl v2.2.2 for Python 2.7 and i wanted to set colors to cells. I have used the following imports. import openpyxl, from openpyxl import Workbook from openpyxl.styles import Color, PatternFill, Font, Border from openpyxl.styles import colors from openpyxl.cell import Cell and the following is the code I tried using: