Python自动化 综合实战PPT

'''
需求分析:
4S店汽车消费者洞察报告
'''
#导入模块
import pptx
from pptx.util import Inches,Pt  #度量单位
from pptx.enum.shapes import MSO_SHAPE #
from pptx.dml.color import RGBColor 
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.enum.chart import XL_LEGEND_POSITION

#构建PPT
prs = pptx.Presentation()

#第一页
slide1 = prs.slides.add_slide(prs.slide_layouts[0])   #添加幻灯片,布局为第一个
slide1.shapes.title.text = '4S店汽车消费者洞察报告'
slide1.shapes.placeholders[1].text = '2020年第一季度'

#第二页
slide2 = prs.slides.add_slide(prs.slide_layouts[1])   #添加幻灯片,布局为第一个
slide2.shapes.title.text = '目录'
content=slide2.shapes.placeholders[1].text_frame #添加文本框
content.add_paragraph().text = '4S店第一季度汽车销售榜'
content.add_paragraph().text = '汽车用户消费偏好趋势'
content.add_paragraph().text = '汽车消费者用户画像'

#第三页
slide3 = prs.slides.add_slide(prs.slide_layouts[1])   #添加幻灯片,布局为第一个
slide3.shapes.title.text = '目录'
table = slide3.shapes.add_table(11,4,Inches(0),Inches(1.4),Inches(10),Inches(6)).table
#写入内容表格
table.cell(0,0).text = '排名'
table.cell(0,1).text = '车型'
table.cell(0,2).text = '所属厂商'
table.cell(0,3).text = '一季度销售额'
data = [{'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000},
        {'type':'xxx','base':'xxxx','total':5000}]
#遍历添加数据        
for i in range(11):
    #不会覆盖第一行
    if i>0:
        table.cell(i,0).text = str(i)
        table.cell(i,1).text = data[i-1]['type']
        table.cell(i,2).text = data[i-1]['base']
        table.cell(i,3).text = str(data[i-1]['total'])

#第四页
slide4 = prs.slides.add_slide(prs.slide_layouts[1])   #添加幻灯片,布局为第一个
slide4.shapes.title.text = '汽车用户消费偏好趋势'
#添加形状
shape1 = slide4.shapes.add_shape(MSO_SHAPE.RECTANGLE,Inches(1),Inches(1.5),Inches(3),Inches(2.5))
#填充
fill = shape1.fill
fill.solid()
fill.fore_color.rgb = RGBColor(51,200,255)
shape1.text_frame.add_paragraph().text = '价位偏好'
p1 = shape1.text_frame.add_paragraph()
p1.text = '经济入门型'
p1.font.size = Pt(35)
shape2 = slide4.shapes.add_shape(MSO_SHAPE.RECTANGLE,Inches(4),Inches(1.5),Inches(5),Inches(2.5))
#填充
fill = shape1.fill
fill.solid()
fill.fore_color.rgb = RGBColor(0,200,255)
shape2.text_frame.add_paragraph().text = '国别偏好'
p1 = shape2.text_frame.add_paragraph()
p1.text = '国产自主品牌'
p1.font.size = Pt(35)
shape3 = slide4.shapes.add_shape(MSO_SHAPE.RECTANGLE,Inches(1),Inches(4),Inches(8),Inches(2.5))
#填充
fill = shape1.fill
fill.solid()
fill.fore_color.rgb = RGBColor(51,200,255)
shape3.text_frame.add_paragraph().text = '车型偏好'
p1 = shape3.text_frame.add_paragraph()
p1.text = 'SUV车型仍为主力 '
p1.font.size = Pt(35)


#第五页
slide5 = prs.slides.add_slide(prs.slide_layouts[1])   #添加幻灯片,布局为第一个
slide5.shapes.title.text = '汽车消费者用户画像'
chart_data = CategoryChartData()  #构建数据
chart_data.categories = ['70后','80后','90后']  #x轴标注类别
chart_data.add_series('各年龄段的消费情况',(40,50,52))
#插入图表
slide5.shapes.add_chart(
     XL_CHART_TYPE.COLUMN_CLUSTERED,Inches(1),Inches(2.5),Inches(4),Inches(3),chart_data
    )

chart_data1 = CategoryChartData()  #构建数据
chart_data1.categories = ['','']  #x轴标注类别
chart_data1.add_series('性别分布',(40,50))
#插入图表
chart =slide5.shapes.add_chart(
     XL_CHART_TYPE.PIE,Inches(6),Inches(2.5),Inches(3),Inches(3),chart_data1
    ).chart

#设置图例和图例显示的位置、
chart.has_legend = True
chart.legend.position = XL_LEGEND_POSITION.RIGHT

#第六页
slide4 = prs.slides.add_slide(prs.slide_layouts[0])   #添加幻灯片,布局为第一个
slide4.shapes.title.text = '谢谢'

#保存
prs.save('report.pptx')

 

posted @ 2022-10-03 08:02  Crown-V  阅读(71)  评论(0)    收藏  举报