安装

  • pip install python-pptx

python操作pptx文件

from pptx import Presentation

创建ppt文件

prs = Presentation()    # 创建ppt文件
prs.save('texst01_ppt.pptx')    # 保存ppt文件

创建副件

prs1 = Presentation('texst01_ppt.pptx')
prs1.save('texst01_ppt副件.pptx')

操作幻灯片

from pptx import Presentationprs = Presentation()
slide_layout = prs.slide_layouts[1]  # 选择版式
slide_01 = prs.slides.add_slide(slide_layout)   # 应用版式
shapes = slide_01.shapes
prs.save('test02_ppt.pptx')

形状学习和颜色

from pptx import Presentation
from pptx.util import Inches,Pt
from pptx.enum.shapes import MSO_SHAPE
from pptx.dml.color import RGBColor
from pptx.enum.dml import MSO_THEME_COLORprs = Presentation()
slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(slide_layout)
shapes = slide.shapes
# shapes.add_shape??  autoshape_type_id,left,top,width,height
left = top = width = height = Inches(1)

查看一英尺

length = Inches(1)
print(length,length.cm,length.pt)
length2 = Pt(72)
print(length2)

添加圆角矩形并设置长宽和在ppt的位置

shape = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE,left,top,width,height)

颜色填充

left = top = width = height = Inches(2)
shape_02 = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE,left,top,width,height)
fill = shape_02.fill    # 设置填充色
fill.solid()    # 实心填充
fill.fore_color.rgb = RGBColor(255,0,0)

设置形状颜色填充

left = top =width = height = Inches(4)
shape_03 = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE,left,top,width,height)
fill_03 = shape_03.fill
fill_03.solid()
fill_03.fore_color.theme_color = MSO_THEME_COLOR.ACCENT_1   # 设置主题颜色
fill_03.fore_color.brightness = -0.25 # 设置亮度

设置背景色

left = top =width = height = Inches(8)
shape_04 = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE,left,top,width,height)
shape_04.fill.background()

设置轮廓颜色

slide_layout_02 = prs.slide_layouts[0]
slide_02 = prs.slides.add_slide(slide_layout_02)
shapes_02 = slide_02.shapes

设置图片轮廓

left = top =width = height = Inches(4)
shape_03 = shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE,left,top,width,height)

设置边框

line = shape_02.line
line.color.rgb = RGBColor(255,0,0)  # 设置边框颜色
line.color.brithtness = 0.5    #设置边框的通透度
line.width = Pt(2.5)    # 设置边框宽度
line.color.theme_color = MSO_THEME_COLOR.ACCENT_1   # 将边框设置为主题色
line.fill.background()  # 设置边框为透明色

保存

prs.save('test03_ppt.pptx')

占位符

from pptx import Presentationprs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[8])
# 输出slide中的每个占位符的索引和名字
for shape in slide.placeholders:print(shape.placeholder_format.idx,shape.name)
# 知道索引后也可以这样访问名称
print(slide.palceholder[1])for shape in slide.shapes:if shape.is_placeholder:phf = shape.placeholder_formatprint(phf.index,phf.type)slide_02 = prs.slides.add_slide(prs.slide_layouts[8])
place_holder = slide_02.placeholders[1]
# print(place_holder.name)
# print(place_holder.placeholder_format.type)
picture = place_holder.insert_picture('壁纸.jpg')
prs.save('test04_ppt.pptx')

文本框

from pptx import Presentation
from pptx.enum.text import MSO_VERTICAL_ANCHOR,MSO_AUTO_SIZE
from pptx.util import Inches,Pt
from pptx.enum.dml import MSO_THEME_COLORprs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[1])
shapes = slide.shapes
for shape in shapes:if not shape.has_text_frame:    # 判断如果说形状没有文本框,跳出,进行下一次循环continuetext_frame = shape.text_frameprint(text_frame)

访问段落

para_strs = ['Egg,bacon,sausage and spam','spam,bacon,sausage and spam','spam,egg,spam,spam,bacon and spam'
]
for shape in shapes:if not shape.has_text_frame:continuetext_frame = shape.text_frame  # 因为文本框中时常有自带的段落,所以我们首先需清空文本框text_frame.clear()  # 清空文本框para = text_frame.paragraphs[0] # 获取索引为0的段落print(para)para.text = para_strs[0]    # 将第一条数据放置段落1中run = para.add_run()run.text = 'hello world'for para_str in para_strs[1:]:  # 取出第一条下面的所有数据p = text_frame.add_paragraph()p.text = para_str

文本框格式

slide_02 = prs.slides.add_slide(prs.slide_layouts[1])
shapes = slide_02.shapes
shape = shapes[0]
text_frame = shape.text_frame
text_frame.text = 'hello world bababbababbababa'
text_frame.margin_bottom = Inches(0.08) # 设置下边距
text_frame.vertical_anchor = MSO_VERTICAL_ANCHOR.TOP # 垂直方向顶锚点
text_frame.word_wrap = False    # True 允许自动换行  False不允许自动换行
text_frame.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT  # 文本框自适应字体大小
text_frame_02 = shapes[1].text_frame
text_frame_02.clear()
p = text_frame_02.paragraphs[0]
run = p.add_run()
run.text = 'how are you,I am study python'

设置颜色

font = run.font
font.name = 'Calibri'   # 设置字体样式
font.size = Pt(15)    # 设置字体大小
font.blod = True  # 设置字体石否加粗 True 加粗 False 不加粗 None 保持原有设置
font.italic = None # 字体是否倾斜 True 倾斜 False 不倾斜 None 保持原有设置
font.color.theme_color = MSO_THEME_COLOR.ACCENT_1 # 设置字体主题颜色
prs.save('text05_ppt.pptx')

操作图表

导入库

from pptx import Presentation
from pptx.util import Inches,Pt
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE, XL_LABEL_POSITION

插入柱状图

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
char_data = CategoryChartData()
char_data.categories = ['Apple','banana','cherry']  # x轴的分类
char_data.add_series('sales',(20,30,10))
left = Inches(2)
top = Inches(2)
width = Inches(6)
height = Inches(5)
slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, # 图表类型为簇状柱形图x=left, y=top,    # 图表区左上角在幻灯片中的坐标位置cx=width,  cy=height,     # 图表区的长和宽chart_data=char_data    # 图表数据)
prs.save('text06-chart01.pptx')

创建折线图

prs_02 = Presentation()
slide_02 = prs_02.slides.add_slide(prs_02.slide_layouts[5])
chart_data02 = CategoryChartData()  # 图表数据
chart_data02.categories = ['Q1 sales','Q2 sales','Q3 sales']
chart_data02.add_series('Apple',(30,25,40))
chart_data02.add_series('banana',(25,30,40))
chart_data02.add_series('cherry',(40,25,30))
chart = slide_02.shapes.add_chart(XL_CHART_TYPE.LINE,left,top,width,height,chart_data02
)
chart.has_legend = True
prs_02.save('test06_chart02.pptx')

扇形图

prs_03 = Presentation()
slide_03 = prs_03.slides.add_slide(prs_03.slide_layouts[5])
char_data03 = CategoryChartData()
char_data03.categories = ['Q1', 'Q2', 'Q3']
char_data03.add_series('Q1 sales',[0.5,0.3,0.2])
chart_03 = slide_03.shapes.add_chart(XL_CHART_TYPE.PIE,left,top,width,height,char_data03
)
chart = chart_03.chart
plot = chart.plots[0]
# 设置数据标签
plot.has_data_labels = True    # 显示数据标签
data_labels = plot.data_labels    # 获取数据标签控制类
data_labels.show_category_name = True    # 是否显示类别名称
data_labels.show_value = False    # 是否显示值
data_labels.show_percentage = True    # 是否显示百分比
data_labels.number_format = '0.0%'    # 标签的数字格式
data_labels.position = XL_LABEL_POSITION.INSIDE_END    # 标签位置
data_labels.font.name = 'Arial'
data_labels.font.size = Pt(14)# 设置图表标题
chart.has_title = True    # 显示标题
para = chart.chart_title.text_frame.add_paragraph()
para.text = '销量占比'    # 标题内容
para.font.size = Pt(16)    # 字体大小prs_03.save('test06_chart03.pptx')

添加表格

from pptx import Presentation
from pptx.util import Inchesprs_04 = Presentation()
slide_04 = prs_04.slides.add_slide(prs_04.slide_layouts[5])
x,y,cx,cy = Inches(2),Inches(2),Inches(4),Inches(1.5)
shape = slide_04.shapes.add_table(3,3,x,y,cx,cy)print(shape.has_table)  # 判断是否有表格
table = shape.table
cell = table.cell(0,0)
cell.text = 'Apple'
prs_04.save('test07_tb.pptx')

练习

导入库

from pptx import Presentation

练习01

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[0])
title = slide.shapes.title
title.text = 'Hello World'
subtitle = slide.placeholders[1]
subtitle.text = 'Welcome python-pptx'
prs.save('test1.pptx')

练习02

slide_02 = prs.slides.add_slide(prs.slide_layouts[1])
shapes = slide_02.shapes
title_shape = shapes.title
body_shape = shapes.placeholders[1]
title_shape.text = '添加bullet shape'
tf = body_shape.text_frame
tf.text = '定位到bullet 幻灯片'
p = tf.add_paragraph()
p.text = '使用文本框'
p.level = 1
p = tf.add_paragraph()
p.text = '使用文本框的二级'
p.level = 2
prs.save('text1.pptx')

插入图片

from pptx import Presentation
from pptx.util import Inchesprs = Presentation()
blank_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_layout)
# slide.shapes.add_picture??
left = top = Inches(1)
img_path = '壁纸.jpg'
slide.shapes.add_picture(img_path,left,top
)
prs.save('text2.pptx')

添加形状(五边形)

from pptx import Presentation
from pptx.util import Inches
from pptx.enum.shapes import MSO_AUTO_SHAPE_TYPEprs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
shapes = slide.shapes
shapes.title.text = '添加形状'
left = Inches(0.93)
top = Inches(3)
width = Inches(1.75)
height = Inches(1)
# shapes.add_shape??
shape = shapes.add_shape(MSO_AUTO_SHAPE_TYPE.PENTAGON,left,top,width,height)  # 添加五边形
shape.text = 'step'
'''
如何在第一个五边形后边添加V型
- 添加第一个
- 通过for循环改变其内容以及位置
'''
left = left + width - Inches(0.4)
width = Inches(2)
for n in range(2,6):shape = shapes.add_shape(MSO_AUTO_SHAPE_TYPE.CHEVRON,left,top,width,height)   # 创建v型图shape.text = 'step %d '%n # 每个V型的图片的内容填充left  = left + width - Inches(0.4)  # 每个图片的位置进行累加 往右移动prs.save('test3_shape.pptx')

读取幻灯片内容

from pptx import Presentationprs = Presentation(r'python-ppt\text1.pptx')  # 打开text1.pptx文件
text_runs = []
for slide in prs.slides:for shape in slide.shapes:if not shape.has_text_frame:continuefor para in shape.text_frame.paragraphs:for run in para.runs:text_runs.append(run.text)
print(text_runs)

办公自动化--python-pptx相关推荐

  1. python pptx怎么复制ppt_python pptx复制ppt中的某一页并且放在这一页之后

    如题,我有一个模板,我想根据需求复制模板中间的某一页多次,比如复制第五页,然后复制3次,那么第六页,第七页,第八页都是和第五页一模一样的ppt,次数是根据我的需求指定的,使用python pptx模块 ...

  2. python pptx 关于在ppt里插入表格,调整合并单元格的问题

    python pptx 关于在ppt里插入表格,调整合并单元格的问题 需求 找到合并了的单元格 思路 判断是否是合并单元格 合并位置的记录 合并 代码 需求 首先我这是为了从word里面将内容导到pp ...

  3. Python pptx模块

    安装pptx pip install python-pptx Python pptx模块是一个Python库,用于创建和更新Microsoft PowerPoint (.pptx)文件.该模块允许开发 ...

  4. python pptx table_python pptx获取表宽度

    在Scanny的代码和pptx documentation的基础上,我们可以定义一个这样的函数来打印整个现有python pptx表对象的维度:from pptx import Presentatio ...

  5. python pptx怎么复制ppt_python pptx复制指定页的ppt教程

    如题,我有一个模板,我想根据需求复制模板中间的某一页多次,比如复制第五页,然后复制3次,那么第六页,第七页,第八页都是和第五页一模一样的ppt,次数是根据我的需求指定的,使用python pptx模块 ...

  6. python 办公自动化-Python办公自动化|从Excel到Word

    点击上方『早起Python』关注并星标公众号 第一时间接收最新Python干货! 前言 在前几天的文章中我们讲解了如何从Word表格中提取指定数据并按照格式保存到Excel中,今天我们将再次以一位读者 ...

  7. python pptx库中文文档_基于python-pptx库中文文档及使用详解

    个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation prs = Presen ...

  8. python pptx table_Python-pptx Table

    image Table对象 使用SlideShapes上的add_table()方法将Table对象添加到幻灯片. class pptx.table.Table 一个DrawingML表对象.不能直接 ...

  9. python pptx教学_基于python-pptx库中文文档及使用详解

    个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation prs = Presen ...

  10. python pptx库中文文档_python-pptx库中文文档及使用样例

    个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 转载请注明出处,谢谢 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation p ...

最新文章

  1. Java中的匿名对象
  2. Windows 系统下设置Nodejs NPM全局路径
  3. 区块链100问 第一问
  4. ubuntu添加软件源
  5. 认识Java异步编程
  6. 中国娱乐社交企业出海发展专题报告
  7. 学会这几招,晋升不慌了!
  8. 未能找到元数据文件_Flink 源码:Checkpoint 元数据详解
  9. python unittest excel,Python unittest excel数据驱动
  10. 重装系统的悲剧。。。。。
  11. 物联网卡11位和13位号码的区别在于哪
  12. IEC61850概述
  13. python cad模块_Pycad: Python Extension for AutoCad
  14. spss自学过程案例
  15. 试题 算法训练 预测身高
  16. AcWing 145 超市
  17. 公众号上怎么转换html格式,教你完美复制别人的公众号内容和图片到自己的号...
  18. 解决selenium遇到火狐浏览器自动打开下载文件
  19. 从博士生论文选题看威客理论研究最新进展
  20. 外网映射工具natapp安装和使用

热门文章

  1. 100行代码 5分钟开发一个数字货币行情软件(升级版)
  2. 如何规划并进行一场优质的绩效面谈
  3. 浅谈大数据业务处理流程
  4. 堆和堆排序:为什么说堆排序没有快速排序快
  5. 产品思考|为什么线上抓娃娃要用真机?
  6. Unity3D简单电影视图编辑
  7. 基于springboot的高校羽毛球馆信息管理系统的设计与实现
  8. 【JVM】JVM之执行引擎
  9. 华为路由器DCHP服务配置实验
  10. 【评论】华为的鸿蒙系统会开源吗?