In a PowerPoint presentation, I have a table where one column is filled with different colors. Is it possible to automate to identify/extract the RGB values or color of the fill in each cell?
Tried pptx library and not able to extract fill color information.
Raj Kumar is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1
Given the PowerPointExample.pptx
has a table as first shape on first slide and some of the cells have solid fill color as RGB color, then the following should work to get the fill colors:
from pptx import Presentation
from pptx.enum.dml import MSO_FILL
from pptx.enum.dml import MSO_COLOR_TYPE
presentation = Presentation('./PowerPointExample.pptx')
slide = presentation.slides[0]
table = slide.shapes[0].table
for cell in table.iter_cells():
fill_format = cell.fill
if fill_format.type == MSO_FILL.SOLID:
fore_color = fill_format.fore_color
if fore_color.type == MSO_COLOR_TYPE.RGB:
print('MSO_FILL.SOLID fore_color:' + str(fore_color.rgb))
Why fore_color
and not back_color
? Because cells have pattern fill and solid patterns show only fore color while back color is the color behind the pattern. This will only be visible for not solid pattern.
If MSO_COLOR_TYPE will be MSO_COLOR_TYPE.SCHEME, then only fore_color.theme_color
can be got but not RGB.
And cells also could be colored by a table style. And getting that is not supported by python.pptx.
3