之前我们讲到填充占位符的时候只讲了怎么填充文本到占位符里,现在学到了如何添加图表,那么就顺便补充一下如何把图表填充到占位符里吧。
由于PPT默认自带的那些母版并没有ChartPlaceholder类型的占位符,所以我们要自己准备一个PPT文档,当然也可以使用书中提供的PPT文档“测试文档2.pptx”,里面创建了图片、图表、表格、文本框等多种母版,其中下标为2的母版是图表占位符,现在我们用它把图表占位符填充为一个饼图,代码如下:
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.enum.shapes import PP_PLACEHOLDER_TYPE
ppt = Presentation("./ppt_ files/测试文档2.pptx")
slide = ppt.slides.add_slide(ppt.slide_layouts[2])
for placeholder in slide.placeholders:
phf = placeholder.placeholder_format
print(phf.type) # 输出:CHART (8)
if phf.type != PP_PLACEHOLDER_TYPE.CHART:
continue
chart_data = ChartData()
chart_data.categories = ['Q1','Q2','Q3','Q4']
chart_data.add_series('数码娱乐',(36.6,21.1,15.9,20.4))
graphic_frame = placeholder.insert_chart(XL_CHART_TYPE.PIE,
chart_data)
graphic_frame.chart.has_legend = True
ppt.save("./ppt_ files/test.pptx")
还是与之前填充文本占位符一样,首先通过占位符对象的placeholder_format获取到占位符的类型,如果type是PP_PLACEHOLDER_TYPE.CHART,就给它填充,填充操作就是调用占位符对象的insert_chart()方法,把图表类型和图表数据传进去就可以了,整个过程应该没有什么比较难理解的地方。