资讯详情

python-pptx学习总结

最近ppt排版太麻烦了。每次都要贴截图,不容易对齐。看起来很不舒服。一旦结果更新,就要重新贴截图。我觉得太麻烦了。我以前知道这个python-pptx,我能自动排版图片吗?答案是肯定的。以下是我的学习记录。

安装python-pptx

网上有很多教程,就不说了,

参考

https://blog.csdn.net/weixin_42750611/article/details/108029796

https://zhuanlan.zhihu.com/p/344862384

python pptx 操作实例1(新建ppt)

from pptx import Presentation  ppt=Presentation() ppt.slides.add_slide(ppt.slide_layouts[0]) ppt.save("测试1.pptx") ## 添加个换灯片  

python pptx 基本操作

from pptx import Presentation  prs = Presentation('test_template.pptx') for slide in prs.slides:     print(slide)      from pptx import Presentation  prs = Presentation('test_template.pptx') for slide in prs.slides:     for shape in slide.shapes:         print(shape)          # 获取所有Slide中的内容 from pptx import Presentation prs = Presentation('test_template.pptx') for slide in prs.slides:     for shape in slide.shapes:         if shape.has_text_frame:             text_frame = shape.text_frame             print(text_frame.text)  # 获取某一页Slide中的内容 from pptx import Presentation  prs = Presentation('test_template.pptx') for i, slide in enumerate(prs.slides):     if i == 2:
        for shape in slide.shapes:
            if shape.has_text_frame:
                text_frame = shape.text_frame
                print(text_frame.text)      

<pptx.slide.Slide object at 0x7fdd3d46b340>
<pptx.slide.Slide object at 0x7fdd3d3b5970>
<pptx.shapes.placeholder.SlidePlaceholder object at 0x7fdd3d3b5790>
<pptx.shapes.graphfrm.GraphicFrame object at 0x7fdd3d3b5b80>
<pptx.shapes.graphfrm.GraphicFrame object at 0x7fdd3d3b50d0>
<pptx.shapes.placeholder.SlidePlaceholder object at 0x7fdd3d3b5340>
<pptx.shapes.graphfrm.GraphicFrame object at 0x7fdd3d3b50a0>
<pptx.shapes.graphfrm.GraphicFrame object at 0x7fdd3d3b5130>
报告
报告

python pptx使用案例2(占位符使用)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from pptx import Presentation
 
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
 
title.text = "Hello, World!"
subtitle.text = "python-pptx 可以轻松制作powerpoint!"
 
prs.save('test1.pptx')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u5hI1tJt-1657114192007)(attachment:image.png)]

from pptx import Presentation
 
prs = Presentation()
bullet_slide_layout = prs.slide_layouts[1]
 
slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes
 
title_shape = shapes.title
body_shape = shapes.placeholders[1]
 
title_shape.text = 'Adding a Bullet Slide'
 
tf = body_shape.text_frame
tf.text = 'Find the bullet slide layout'
 
p = tf.add_paragraph()
p.text = 'Use _TextFrame.text for first bullet'
p.level = 1
 
p = tf.add_paragraph()
p.text = 'Use _TextFrame.add_paragraph() for subsequent bullets'
p.level = 2
 
prs.save('test2.pptx')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yZO45EeS-1657114192008)(attachment:image.png)]

python-pptx使用案例3 插入形状

from pptx import Presentation
from pptx.util import Pt,Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from pptx.enum.shapes import MSO_SHAPE

ppt = Presentation(r'测试1.pptx')
slide = ppt.slides[0]#更改第一张
# 添加矩形
# 设置位置以及大小
left, top, width, height = Cm(0), Cm(0), Cm(2), Cm(2)
# 添加形状
rectangle = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left, top, width, height)
# 设置背景填充
rectangle.fill.solid()
# 设置背景颜色
rectangle.fill.fore_color.rgb = RGBColor(34, 134, 165)
# 设置边框颜色
rectangle.line.color.rgb = RGBColor(34, 134, 165)
ppt.save('测试1.pptx')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YkTq828L-1657114192008)(attachment:image.png)]

python pptx使用案例3(插入图片)

from pptx import Presentation

# ppt = Presentation(r'测试1.pptx')
# slide=ppt.slides.add_slide(ppt.slide_layouts[0])
# left = top = Cm(3)
# pic = slide.shapes.add_picture('./0.png',left,top)

ppt = Presentation(r'测试1.pptx')# 图片太大了
slide = ppt.slides[1]#更改第一张
left = top = Cm(0)
pic = slide.shapes.add_picture('./0.png',left,top)

ppt.save("测试1.pptx")
## 添加了一张换灯片


############ 修改位置
from pptx import Presentation

# ppt = Presentation(r'测试1.pptx')
# slide=ppt.slides.add_slide(ppt.slide_layouts[0])
# left = top = Cm(3)
# pic = slide.shapes.add_picture('./0.png',left,top)

ppt = Presentation(r'测试1.pptx')# 图片太大了
slide = ppt.slides[2]#更改第一张
left = top = Cm(0)
height=Cm(3)
pic = slide.shapes.add_picture('./0.png',left,top,height=height)

ppt.save("测试1.pptx")
## 添加了一张换灯片

from pptx import Presentation

ppt = Presentation(r'测试1.pptx')
slide=ppt.slides.add_slide(ppt.slide_layouts[0])
left = top = Cm(3)
width=Cm(5)
height=Cm(1)
pic = slide.shapes.add_picture('./0.png',left,top,width=width,height=height)

ppt.save("测试1.pptx")

python pptx使用案例4(添加表格)

ppt = Presentation(r'测试1.pptx')
slide=ppt.slides.add_slide(ppt.slide_layouts[0])

rows,cols = 4,2
left = top =Cm(5)
width = Cm(18)
height = Cm(3)

table = slide.shapes.add_table(rows,cols,left,top,width,height).table
# 可以修改列宽、行高
table.columns[0].width = Cm(6)
table.columns[1].width = Cm(4)
table.rows[0].height =Cm(2)

data = [
    ['姓名','成绩'],
    ['李雷',99],
    ['韩梅梅', 92],
    ['马东梅', 92],
]
for row in range(rows):
    for col in range(cols):
        table.cell(row,col).text =str(data[row][col])

ppt.save("测试1.pptx")

########################################################

ppt = Presentation(r'测试1.pptx')
slide=ppt.slides.add_slide(ppt.slide_layouts[0])

rows,cols = 4,2
left = top =Cm(5)
width = Cm(18)
height = Cm(3)

table = slide.shapes.add_table(rows,cols,left,top,width,height).table
# 可以修改列宽、行高
# table.columns[0].width = Cm(6)
# table.columns[1].width = Cm(4)
table.rows[0].height =Cm(2)

data = [
    ['姓名','成绩'],
    ['李雷',99],
    ['韩梅梅', 92],
    ['马东梅', 92],
]
for row in range(rows):
    for col in range(cols):
        table.cell(row,col).text =str(data[row][col])

ppt.save("测试1.pptx")

python -pptx使用案例5(添加图片和表格)

# 加载库
import  os
from pptx import Presentation
from pptx.util import Cm, Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor


# 设置路径

# 实例化 ppt 文档对象
prs = Presentation()

# 插入幻灯片
blank_slide = prs.slide_layouts[6]
slide_1 = prs.slides.add_slide(blank_slide)

# 添加图片
img_name  = 'shenma.jpeg'
## 中央主图
pic = slide_1.shapes.add_picture(image_file=img_name,
                           left=Inches(1),
                           top=Inches(1),
                           width=Inches(8),
                           height=Inches(5)
                          )
## 左上角小图
slide_1.shapes.add_picture(image_file=img_name,
                           left=Inches(0.5),
                           top=Inches(0.5),
                           width=Inches(3),
                           height=Inches(1.5)
                          )
## 右上角小图
slide_1.shapes.add_picture(image_file=img_name,
                           left=Inches(7.5),
                           top=Inches(0.5),
                           width=Inches(3),
                           height=Inches(1.5)
                          )
## 左下角小图
slide_1.shapes.add_picture(image_file=img_name,
                           left=Inches(0.5),
                           top=Inches(5),
                           width=Inches(3),
                           height=Inches(1.5)
                          )
# 右下角小图
slide_1.shapes.add_picture(image_file=img_name,
                           left=Inches(7.5),
                           top=Inches(5),
                           width=Inches(3),
                           height=Inches(1.5)
                          )
# 添加文本框
textbox= slide_1.shapes.add_textbox(left=Inches(1),
                                    top=Inches(6),
                                    width=Inches(8),
                                    height=Inches(2)
                                   )
## 向文本框加入文字
tf = textbox.text_frame
para = tf.add_paragraph()    # 添加段落
para.text = '神马都是浮云!!!'
para.alignment = PP_ALIGN.CENTER  # 居中
## 设置字体
font = para.font
font.size = Pt(36)    # 大小
font.name = '华文彩云'    # 字体
font.bold = True    # 加粗
font.italic = True  # 倾斜
font.color.rgb = RGBColor(225, 225, 0)  # 黄色

# 保存 ppt
prs.save('测试3.pptx')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7zcwtkv4-1657114192008)(attachment:image.png)]

python-pptx使用案例6(改变字体)

# 加载库
import  os
from pptx import Presentation
from pptx.util import Cm, Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor

# 设置路径

# 实例化 ppt 文档对象
prs = Presentation()

# 插入幻灯片
blank_slide = prs.slide_layouts[6]
slide_1 = prs.slides.add_slide(blank_slide)

# 添加图片
img_name  = 'shenma.jpeg'
## 中央主图

## 左上角小图
slide_1.shapes.add_picture(image_file=img_name,
                           left=Cm(0),
                           top=Cm(0.5),
                           width=Cm(10),
                           height=Cm(3)
                          )

slide_1.shapes.add_picture(image_file=img_name,
                           left=Cm(0),
                           top=Cm(4),
                           width=Cm(10),
                           height=Cm(3)
                          )

slide_1.shapes.add_picture(image_file=img_name,
                           left=Cm(11),
                           top=Cm(0.5),
                           width=Cm(10),
                           height=Cm(3)
                          )

slide_1.shapes.add_picture(image_file=img_name,
                           left=Cm(11),
                           top=Cm(4),
                           width=Cm(10),
                           height=Cm(3)
                          )

# 添加文本框
# textbox= slide_1.shapes.add_textbox(left=Cm(0),
# top=Cm(0),
# width=Cm(10),
# height=Cm(0.5)
# )
## 向文本框加入文字

left = top = Cm(0)
width=Cm(10)
height=Cm(0.5)
txBox = slide_1.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
p = tf.paragraphs[0]
run = p.add_run()
run.text = "Hello World"
font = run.font
#font.name = 'Calibri'
font.name="Times New Roman"
font.bold = True    # 加粗
font.size = Pt(6)

left= Cm(11)
top = Cm(0)
width=Cm(10)
height=Cm(0.5)
txBox = slide_1.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
p = tf.paragraphs[0]
run = p.add_run()
run.text = "Hello World2"
font = run.font
#font.name = 'Calibri'
font.name="Times New Roman"
font.bold = True    # 加粗
font.size = Pt(6)



# 保存 ppt
prs.save('测试4.pptx')

python-pptx使用案例7(单独测试文本框)

import os

from pptx import Presentation
from pptx.util import Inches, Pt
prs = Presentation()
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
shapes = slide.shapes
left = top = Cm(0)
width=Cm(10)
height=Cm(0.5)
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame

p = tf.paragraphs[0]
run = p.add_run()
run.text = "Hello World"

font = run.font
font.name = 'Times New Roman'
font.size = Pt(6)

prs.save('测试5.pptx')

python pptx使用案例8(自动创建多个文本框)

# 加载库
import  os
from pptx import Presentation
from pptx.util import Cm, Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor

# 设置路径

# 实例化 ppt 文档对象
prs = Presentation()

blank_slide = prs.slide_layouts[6]
ppt = prs.slides.add_slide(blank_slide)

# 模版图片
img_name  = 'shenma.jpeg'


######################### setting parmeters #######################
nrow=5
ncol=3
textbox_height=0.5
textbox_width=10
pic_height=10
pic_width=10
margin_width=1
margin_height=0.5

box_left=0 
box_top =0
##############################################

text_list=["method"+str(i) for i in range(1,nrow*ncol+1)]
print(text_list)

for i in range(nrow):
    for j in range(ncol):
        ind=i*ncol+j
        print(ind)
        print("====================")
        left=Cm(j*textbox_width+j*margin_width)
        top=Cm(i*textbox_height+i*margin_height+i*pic_height)## 加入图片的高度
        width=Cm(textbox_width)
        height=Cm(textbox_height)
        txBox = ppt.shapes.add_textbox(left, top, width, height)
        tf = txBox.text_frame
        p = tf 

标签: 电子台秤传感器yzo

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台