导图社区 pptx库超详细总结
python-pptx库最全总结,所有函数用法解释,并附有代码,本图知识梳理清楚,非常实用,值得收藏。
编辑于2021-10-24 13:25:32python-pptx
Presentations
from pptx import Presentation 打开:prs = Presentation(path_to_pptx_file) 创建:prs = Presentation()
core_properties
文档属性
author
文档的作者
print(prs.core_properties.author) # python-pptx
category
Resume, Letter, Financial Forecast, Proposal, or Technical Presentation.
comments
print(prs.core_properties.comments) # generated by python-pptx
content_status
created
identifier
keywords
language
文档使用的语言
last_modified_by
上次修改时间
last_printed
modified
revision
subject
title
标题
version
版本
notes_master
本演示文稿的 NotesMaster 实例。如果 演示文稿没有笔记母版,则从默认模板创建 一个并返回。每次调用都会返回相同的单个实例。
prs = Presentation()
print(prs.notes_master)
# <pptx.slide.NotesMaster object at 0x00000168EAA1DD60>
save(file)
保存路径+文件名
prs = Presentation()
prs.save('test.pptx')
slide_height
设置幻灯片高度
prs = Presentation()
prs.slide_height = Cm(10)
prs.slide_width = Cm(20)
slide_layouts
幻灯片布局
print(prs.slide_layouts)
# <pptx.slide.SlideLayouts object at 0x000001D2A3C2EB00>
slide_master
幻灯片母版
print(prs.slide_master)
# <pptx.slide.SlideMaster object at 0x0000022D14EC60E0>
slide_masters
幻灯片母版列表
print(prs.slide_masters)
# <pptx.slide.SlideMasters object at 0x0000025DD605C900>
slide_width
设置幻灯片宽度
slides
设置幻灯片
print(prs.slides)
# <pptx.slide.Slides object at 0x000001CE62642880>
print(len(prs.slides)) # 默认是1
slides
slides对象
add_slide(slide_layout)
prs = Presentation()
prs.slides.add_slide(prs.slide_layouts[1])
get(slide_id, default=None)
获取幻灯片
index(slide)
获取幻灯片的索引 从0 开始
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(prs.slides.index(slides1)) # 0
slides1 = prs.slides.add_slide(prs.slide_layouts[0])
print(prs.slides.index(slides1)) # 1
slide对象
background
返回幻灯片背景特性
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.background)
# <pptx.slide._Background object at 0x0000023D0A188AC0>
element
返回该幻灯片的元素
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.element)
# <Element {等等}sld at 0x29e61e27cc0>
follow_master_background
True代表继承母版背景 FALSE代表默认背景
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.follow_master_background) # True
has_notes_slide
如果此幻灯片有注释幻灯片,则返回 True
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.has_notes_slide) # False
name
表示此幻灯片的内部名称。 如果未分配名称,则返回空字符串 ('')
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.name) # 返回空
notes_slide
返回此幻灯片的 NotesSlide 实例。 如果幻灯片没有备注幻灯片,则会创建一个。 每次调用都会返回相同的单个实例。
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.notes_slide)
<pptx.slide.NotesSlide object at 0x000002094ABF7950>
placeholders
包含该幻灯片中占位符形状的序列
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.placeholders)
<pptx.shapes.shapetree.SlidePlaceholders object at 0x000002311E6CC910>
shapes
此幻灯片上的形状对象序列的 SlideShapes 实例
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.shapes)
# <pptx.shapes.shapetree.SlideShapes object at 0x000001AD6BAA5840>
slide_id
唯一标识此幻灯片的整数值。如果通过添加、 重新排列或删除幻灯片来更改此幻灯片在幻 灯片序列中的位置,则幻灯片 id 不会更改。
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.slide_id) # 256
slide_layout
此幻灯片继承外观的 SlideLayout 对象
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.slide_layout)
# <pptx.slide.SlideLayout object at 0x00000170025841D0>
SlideLayouts
get_by_name(name, default=None)
获取母版的名字 一个ppt一般只有一个母版
slide_layouts = prs.slide_master.slide_layouts
print(slide_layouts)
# <pptx.slide.SlideLayouts object at 0x000001FC4231D940>
print(slide_layouts.get_by_name)
# <bound method SlideLayouts.get_by_name of <pptx.slide.SlideLayouts object at 0x00000243CE0BCBC0>>
index(slide_layout)
返回此集合中 slide_layout 的从零开始的索引。
如果此集合中不存在 slide_layout,则引发 ValueError。
slide_layouts = prs.slide_master.slide_layouts
print(slide_layouts.index)
# <bound method SlideLayouts.index of <pptx.slide.SlideLayouts object at 0x000002BF16E3AC40>>
part
包含此对象的包部分
slide_layouts = prs.slide_master.slide_layouts
print(slide_layouts.part)
# <pptx.parts.slide.SlideMasterPart object at 0x0000017DD7552460>
remove(slide_layout)
从集合中删除slide_layout。当slide_layout 被使用时,会引发ValueError;作为一个或多 个幻灯片的基础的幻灯片布局不能被移除。
slide_layouts = prs.slide_master.slide_layouts
print(slide_layouts.remove)
# <bound method SlideLayouts.remove of <pptx.slide.SlideLayouts object at 0x000001E387FFDA00>>
SlideLayout
placeholders
包含此幻灯片布局中占位符形状序列的 LayoutPlaceholders 实例,按 idx 顺序排序。
slide_layouts = prs.slide_master.slide_layouts
for slide_layout in slide_layouts:
print(slide_layout)
print(slide_layout.placeholders)
shapes
出现在此幻灯片布局上的形状序列
slide_master
此幻灯片版式从中继承属性的幻灯片母版
slide_layouts = prs.slide_master.slide_layouts
for slide_layout in slide_layouts:
print(slide_layout.shapes)
print(slide_layout.slide_master)
print(slide_layout.used_by_slides)
used_by_slides
基于该幻灯片布局的幻灯片对象的元组
SlideMasters
part
包含此对象的包部分
slide_masters = prs.slide_masters
print(slide_masters.part)
# <pptx.parts.presentation.PresentationPart object at 0x000001F97FCE2250>
SlideMaster
slide_layouts
提供对此幻灯片母版布局的访问
slide_masters = prs.slide_masters
for slide_master in slide_masters:
print(slide_master)
print(slide_master.slide_layouts)
# <pptx.slide.SlideMaster object at 0x00000257E0C65400>
# <pptx.slide.SlideLayouts object at 0x000001FC30F1CC80>
SlidePlaceholders
幻灯片上占位符形状的集合。 支持对其包含的占位符的 idx 值进行迭代、len() 和字典式查找。
NotesSlide
提供对幻灯片注释占位符和 注释讲义页上其他形状的访问
background
提供幻灯片背景属性
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.notes_slide.background)
element
此对象代理的 lxml 元素
name
此幻灯片的内部名称
notes_placeholder
返回此幻灯片上的笔记占位符, 即包含实际笔记文本的形状。
notes_text_frame
返回此幻灯片上笔记占位符的文本框
slides1 = prs.slides.add_slide(prs.slide_layouts[1])
print(slides1.notes_slide.element)
print(slides1.notes_slide.name)
print(slides1.notes_slide.part)
print(slides1.notes_slide.notes_placeholder)
print(slides1.notes_slide.notes_text_frame)
print(slides1.notes_slide.placeholders)
print(slides1.notes_slide.shapes)
part
包含此对象的包部分
placeholders
NotesSlidePlaceholders 的一个实例, 包含此笔记幻灯片中的占位符形状序列
shapes
NotesSlideShapes 的一个实例, 包含出现在此笔记幻灯片上的形状对象序列
chart
chart
category_axis 此图表的类别轴
axis_title
category_type
format
has_major_gridlines
has_minor_gridlines
has_title
major_gridlines
major_tick_mark
maximum_scale
minimum_scale
minor_tick_mark
tick_label_position
tick_labels
visible
chart_style
用于格式化此图表的图表样式的可读/写 整数索引。范围是从 1 到 48。
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
chart_data = CategoryChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('图表1', (19.2, 21.4, 16.7))
chart1 = slides1.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy,chart_data)
chart1.chart.chart_style = 4
chart_title 设置标题
element
format
has_text_frame
text_frame
chart1.chart.chart_title.text_frame.add_paragraph().text = 'This title' 设置chart的标题为This title
chart_type
as_integer_ratio
bit_length
输出标题的二进制长度
chart1.chart.chart_title.text_frame.add_paragraph().text = 'title'
print(chart1.chart.chart_style.bit_length())
conjugate
denominator
from_bytes
imag
numerator
real
to_bytes
element
font
控制此图表的默认文本格式的字体对象
bold
color
fill
italic
language_id
name
size
underline
has_legend
输出是否有legend 添加legend
chart.has_legend = True
legend
代表图表中的图例。 一张图表最多可以有一个图例
font
提供对该图例文本属性
horz_offset
从默认值调整图例的 x 位置。 表示为介于 -1.0 和 1.0 之间的浮点数, 表示图表宽度的一小部分。负值将图例 向左移动,正值将其向右移动。
from pptx.enum.chart import XL_LEGEND_POSITION
chart1.chart.has_legend = True
chart1.chart.legend.position = XL_LEGEND_POSITION.BOTTOM
include_in_layout
如果图例应位于绘图区域内,则为True。
position
指定放置图例的图表的一般区域 from pptx.enum.chart import XL_LEGEND_POSITION
BOTTOM
CORNER
CUSTOM
LEFT
RIGHT
TOP
has_title
输出是否有title 添加title
print(chart1.chart.has_title) # True
part
plots
count
index
replace_data
series
count
index
value_axis
axis_title
element
format
has_text_frame
text_frame
# 添加纵坐标标题
chart1.chart.value_axis.axis_title.text_frame.add_paragraph().text = 'intensity'
crosses
指定此轴上另一轴相交的点,例如自动/零、最小值或最大值。
crosses_at
此轴上与垂直轴相交的数值
format
has_major_gridlines
has_minor_gridlines
has_title
major_gridlines
major_tick_mark
major_unit
此值轴上主要刻度线之间的浮点数单位
maximum_scale
minimum_scale
minor_tick_mark
minor_unit
此值轴上次刻度线之间的浮点数单位
tick_label_position
tick_labels
visible
chart_part
click_action
element
has_chart
has_table
has_text_frame
height
设置图表
chart1.height = Cm(15)
is_placeholder
left
设置图表距离左边缘的距离
chart1l.left= Cm(15)
name
基本上都是read only属性
capitalize()
仅可读 判断是不是大写
para1.text = 'hello'
print(para1.text.capitalize()) # Hello
casefold
center
count
encode
endswith(str)
expandtabs
find
format
format_map
index
isalnum(str)
isalpha(str)
isascii
isdecimal
isdigit(str)
isidentifier
islower
isnumeric
isprintable
isspace
istitle
isupper
join
ljust
lower
lstrip
maketrans
partition
removeprefix
removesuffix
replace
rfind
rindex
rjust
rpartition
rsplit
rstrip
split
splitlines
startswith
strip
swapcase
title
translate
upper
zfill
ole_format
part
placeholder_format
rotation
设置图表旋转
shadow
shape_id
shape_type
print(chart1.shape_type) # CHART (3)
table
top
设置图表距离上边缘的距离
chart1l.top = Cm(15)
width
设置图表宽度
chart1.height = Cm(15)
shapes
SlideShapes
slides1 = prs.slides.add_slide(prs.slide_layouts[1]) print(dir(slides1.shapes))
add_chart(chart_type, x, y, cx, cy, chart_data)
图表类型 XL_CHART_TYPE The chart is positioned at (x, y), has size (cx, cy), and depicts chart_data.
THREE_D_AREA 3D Area. THREE_D_AREA_STACKED 3D Stacked Area. THREE_D_AREA_STACKED_100 100% Stacked Area. THREE_D_BAR_CLUSTERED 3D Clustered Bar. THREE_D_BAR_STACKED 3D Stacked Bar. THREE_D_BAR_STACKED_100 3D 100% Stacked Bar. THREE_D_COLUMN 3D Column. THREE_D_COLUMN_CLUSTERED 3D Clustered Column. THREE_D_COLUMN_STACKED 3D Stacked Column. THREE_D_COLUMN_STACKED_100 3D 100% Stacked Column. THREE_D_LINE 3D Line. THREE_D_PIE 3D Pie. THREE_D_PIE_EXPLODED Exploded 3D Pie. AREA Area AREA_STACKED Stacked Area. AREA_STACKED_100 100% Stacked Area. BAR_CLUSTERED Clustered Bar. BAR_OF_PIE Bar of Pie. BAR_STACKED Stacked Bar. BAR_STACKED_100 100% Stacked Bar. BUBBLE Bubble. BUBBLE_THREE_D_EFFECT Bubble with 3D effects. COLUMN_CLUSTERED Clustered Column. COLUMN_STACKED Stacked Column. COLUMN_STACKED_100 100% Stacked Column. CONE_BAR_CLUSTERED Clustered Cone Bar. CONE_BAR_STACKED Stacked Cone Bar. CONE_BAR_STACKED_100 100% Stacked Cone Bar. CONE_COL 3D Cone Column. CONE_COL_CLUSTERED Clustered Cone Column. CONE_COL_STACKED Stacked Cone Column. CONE_COL_STACKED_100 100% Stacked Cone Column. CYLINDER_BAR_CLUSTERED Clustered Cylinder Bar. CYLINDER_BAR_STACKED Stacked Cylinder Bar. CYLINDER_BAR_STACKED_100 100% Stacked Cylinder Bar. CYLINDER_COL 3D Cylinder Column. CYLINDER_COL_CLUSTERED Clustered Cone Column. CYLINDER_COL_STACKED Stacked Cone Column. CYLINDER_COL_STACKED_100 100% Stacked Cylinder Column. DOUGHNUT Doughnut. DOUGHNUT_EXPLODED Exploded Doughnut. LINE Line. LINE_MARKERS Line with Markers. LINE_MARKERS_STACKED Stacked Line with Markers. LINE_MARKERS_STACKED_100 100% Stacked Line with Markers. LINE_STACKED Stacked Line. LINE_STACKED_100 100% Stacked Line. PIE Pie. PIE_EXPLODED Exploded Pie. PIE_OF_PIE Pie of Pie. PYRAMID_BAR_CLUSTERED Clustered Pyramid Bar. PYRAMID_BAR_STACKED Stacked Pyramid Bar. PYRAMID_BAR_STACKED_100 100% Stacked Pyramid Bar. PYRAMID_COL 3D Pyramid Column. PYRAMID_COL_CLUSTERED Clustered Pyramid Column. PYRAMID_COL_STACKED Stacked Pyramid Column. PYRAMID_COL_STACKED_100 100% Stacked Pyramid Column. RADAR Radar. RADAR_FILLED Filled Radar. RADAR_MARKERS Radar with Data Markers. STOCK_HLC High-Low-Close. STOCK_OHLC Open-High-Low-Close. STOCK_VHLC Volume-High-Low-Close. STOCK_VOHLC Volume-Open-High-Low-Close. SURFACE 3D Surface. SURFACE_TOP_VIEW Surface (Top View). SURFACE_TOP_VIEW_WIREFRAME Surface (Top View wireframe). SURFACE_WIREFRAME 3D Surface (wireframe). XY_SCATTER Scatter. XY_SCATTER_LINES Scatter with Lines. XY_SCATTER_LINES_NO_MARKERS Scatter with Lines and No Data Markers. XY_SCATTER_SMOOTH Scatter with Smoothed Lines. XY_SCATTER_SMOOTH_NO_MARKERS Scatter with Smoothed Lines and No Data Markers.
from pptx.enum.chart import XL_CHART_TYPE
from pptx.chart.data import CategoryChartData
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
chart_data = CategoryChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('图表1', (19.2, 21.4, 16.7))
chart1 = slides1.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED,x, y, cx, cy,chart_data)
柱状图
x, y, cx, cy = Inches(10), Inches(2), Inches(6), Inches(4.5)
chart_data = CategoryChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('Q1 Sales', (19.2, 21.4, 16.7))
chart_data.add_series('Q2 Sales', (22.3, 28.6, 15.2))
chart_data.add_series('Q3 Sales', (20.4, 26.3, 14.2))
chart2 = slides1.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED,x, y, cx, cy,chart_data)
累积柱状图
add_connector(connector_type, begin_x, begin_y, end_x, end_y)
类型 XL_CHART_TYPE CURVE ELBOW MIXED STRAIGHT
from pptx.enum.shapes import MSO_CONNECTOR shapes = prs.slides[0].shapes connector = shapes.add_connector(MSO_CONNECTOR.STRAIGHT, Cm(2), Cm(2), Cm(10), Cm(10)) assert connector.left.cm == 2
add_group_shape(shapes=[ ])
返回一个新附加到这个形状树的 GroupShape 对象
click_action
无条件引发 TypeError。 组形状不能具有单击操作或悬停操作。
element
此形状的 lxml 元素
has_text_frame
无条件为False,组形状没有文本框并 且本身不能包含文本。这不会影响组包 含的形状使每个形状都有自己的文本的能力。
height
形状的顶部和底部范围之间的整数距离
left
此形状左边缘与幻灯片左边缘的整数距离
name
此形状的名称,例如“图7”
part
包含此形状的包装部分。
rotation
顺时针旋转的度数。可以指定负值来表示逆时针旋转, 例如分配 -45.0 会将设置更改为 315.0
# 添加三个形状
shp1 = slides1.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Cm(2), Cm(2), Cm(5), Cm(5))
shp2 = slides1.shapes.add_shape(MSO_SHAPE.CUBE, Cm(2), Cm(2), Cm(5), Cm(5))
shp3 = slides1.shapes.add_shape(MSO_SHAPE.DIAMOND, Cm(2), Cm(2), Cm(5), Cm(5))
# 将三个形状组合在一起
group_shp = slides1.shapes.add_group_shape(shapes=[shp1, shp2,shp3])
print(group_shp.element)
group_shp.left = Cm(10)
group_shp.height = Cm(3)
group_shp.width = Cm(10)
group_shp.rotation = -45.0
shadow
阴影效果
inherit
如果形状继承阴影设置,则为真。
shape_id
标识此形状的只读正整数
shape_type
MSO_SHAPE_TYPE 的成员标识此形状的类型
shapes
该组的 GroupShapes 对象
top
此形状的顶部边缘与幻灯片顶部边缘的整数距离
width
形状的左右两边的整数距离
add_movie(movie_file, left, top, width, height, poster_frame_image=None, mime_type='video/unknown')
插入视频:positioned at (left, top), having size (width, height), and containing movie_file.
movie = slides1.shapes.add_movie(r'test.mp4', Cm(2), Cm(2), Cm(16), Cm(9))
add_ole_object(object_file, prog_id, left, top, width=None, height=None, icon_file=None)
displayed as an icon at left, top with size width, height.
object_file may either be a str path to the file or a file-like object (such as io.BytesIO) containing the bytes of the object file. prog_id can be either a member of pptx.enum.shapes.PROG_ID or a str value like “Adobe.Exchange.7” determined by inspecting the XML generated by PowerPoint for an object of the desired type.
add_picture(image_file, left, top, width=None, height=None)
pic = slides1.shapes.add_picture(r'test.png', Cm(2), Cm(2), Cm(16), Cm(9))
add_shape(autoshape_type_id, left, top, width, height)
形状类型:35种MSO_AUTO_SHAPE_TYPE
https://python-pptx.readthedocs.io/en/latest/api/enum/MsoAutoShapeType.html#msoautoshapetype
shape = slides1.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Cm(2), Cm(2), Cm(5), Cm(5))
add_table(rows, cols, left, top, width, height)
table = slides1.shapes.add_table(3,3,Cm(2), Cm(2), Cm(5), Cm(5))
print(dir(table))
print(dir(table.table))
table = table.table # 调整行高、列宽 for i in range(rows): table.rows[i].height = Cm(1) for i in range(columns): if i in (1, 5): continue table.columns[i].width = Cm(3)
设置表格高度宽度
from pptx.enum.text import PP_ALIGN
table = slides1.shapes.add_table(3,3,Cm(2), Cm(2), Cm(20), Cm(9))
cell = table.table.cell(0, 0) #
tf = cell.text_frame
para = tf.add_paragraph()
para.text = '填入'
para.font.size = Pt(22)
para.alignment = PP_ALIGN.CENTER
add_textbox(left, top, width, height)
添加文本框
text_box = slides1.shapes.add_textbox(Cm(2), Cm(2), Cm(1.5), Cm(4))
tf = text_box.text_frame
para = tf.add_paragraph() # 新增段落
print(dir(table.table.rows))
para.text = '文本框' # 向段落写入文字
para.alignment = PP_ALIGN.CENTER # 居中
para.line_spacing = 1.5 # 1.5 倍的行距
font = para.font
font.name = '微软雅黑' # 字体类型
font.bold = True # 加粗
font.size = Pt(32) # 大小
textbox_obj = slides[i].shapes.add_textbox(name_left, name_top, name_width, name_height) # 添加文本框对象
textbox1 = textbox_obj.text_frame # 添加文本框
textbox1.text = '{} ℃'.format(name_list[num]) # 添加文本框内容
textbox1.fit_text(font_family=u'Times New Roman', max_size=13, bold=True, italic=False,
font_file=None) # 设置文本框字体
build_freeform(start_x=0, start_y=0, scale=1.0)
创建自由形状
add_line_segments(vertices, close=True) 顶点vertices是两个元组,如((1,2),(40,50))
向顶点中的每个点添加一条直线段。
convert_to_shape(origin_x=0, origin_y=0)
返回相对于指定偏移量定位的新自由形状 这个方法可以被多次调用,以便在幻灯片 的不同位置添加相同几何形状的多个形状。
move_to(x, y)
将笔移动到 (x, y)处
fs = slides1.shapes.build_freeform(Inches(1)/1000 )
fs .move_to(Cm(12),Cm(12)) # 比移动到这里,画线的起点
freeline = fs.add_line_segments(((1,2),(40,50)))
freeline.convert_to_shape(Cm(12),Cm(12))
freeline.convert_to_shape(Cm(2),Cm(5))
print(freeline.index)
element
此对象代理的 lxml 元素
index(shape)
返回此序列中形状的索引。
parent
这个形状的祖先对象。例如,一个形状的 父对象一般是包含它的SlideShapes对象。
part
包含此对象的包部分
placeholders
包含此幻灯片中占位符形状序列的 SlidePlaceholders 实例
title
幻灯片上的标题占位符形状
turbo_add_enabled
如果启用了“turbo-add”模式,则为True。 在向幻灯片添加大量形状时,此功能可以从根本上提高性能。
GroupShapes 组形状种的子形状序列
add_chart(chart_type, x, y, cx, cy, chart_data)
add_connector(connector_type, begin_x, begin_y, end_x, end_y)
add_group_shape(shapes=[])
add_ole_object(object_file, prog_id, left, top, width=None, height=None, icon_file=None)
add_picture(image_file, left, top, width=None, height=None)
add_shape(autoshape_type_id, left, top, width, height)
add_textbox(left, top, width, height)
build_freeform(start_x=0, start_y=0, scale=1.0)
element
index(shape)
parent
part
turbo_add_enabled
参见SlideShapes
Shape
adjustments
对此形状的 AdjustmentCollection 实例的只读引用
auto_shape_type
标识此自动形状类型的枚举值
as_integer_ratio
bit_length
conjugate
denominator
from_bytes
imag
numerator
real
to_bytes
fill
提供对填充属性(如填充颜色)的访问
back_color
返回一个表示背景颜色的 ColorFormat 对象。 此属性仅适用于图案填充和线条。
brightness
from_colorchoice_parent
rgb
shape.fill.patterned()
必须先设置patterned属性
shape.fill.back_color.rgb = RGBColor(0, 255, 255)
shape.fill.back_color.brightness = -0.85
theme_color
transparency
设置透明不起效果
type
background()
将填充类型设置为 noFill,即透明。
shape.fill.background() 会将图形填充设为透明,否则采用默认颜色填充
fore_color
返回一个 ColorFormat 实例,表示此填充的前景色
brightness
from_colorchoice_parent
rgb
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(255, 0, 255)
shape.fill.fore_color.transparency = 0.25
theme_color
type
from_fill_parent
无单独属性
gradient()
如果填充还不是渐变,则会添加默认渐变 默认渐变: 该梯度在 90 度角(向上)处呈线性, 有两个停止点。第一站是色调 100%、阴影 100% 和 satMod 130% 的 Accent-1。第二站是色调 50%、阴影 100% 和 satMod 350% 的 Accent-1
shape.fill.gradient()
gradient_angle
线性渐变线的浮动角度
shape.fill.gradient()
shape.fill.gradient_angle = 45
gradient_stops
提供对此渐变的停靠点的访问 当填充不是渐变时引发 TypeError 应该首先调用 fill.gradient()
count
index
print(shape.fill.gradient_stops)
print(shape.fill.gradient_stops.count)
print(shape.fill.gradient_stops.index)
返回的都是对象
pattern
返回表示填充模式的 MSO_PATTERN_TYPE 成员
patterned()
选择图案填充类型
shape.fill.patterned()
shape.fill.fore_color.rgb = RGBColor(255, 0, 255)
shape.fill.fore_color.transparency = 0.25
solid()
将填充类型设置为纯色,即纯色。
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(255, 0, 255)
shape.fill.fore_color.transparency = 0.25
type
从与此填充类型对应的 MSO_FILL_TYPE 枚举中返回一个值。 from pptx.enum.dml import MSO_FILL
BACKGROUND
GRADIENT
GROUP
PATTERNED
from pptx.enum.dml import MSO_FILL
assert shape.fill.type == MSO_FILL.SOLID
PICTURE
SOLID
TEXTURED
has_text_frame
如果此形状可以包含文本,则为True
line
提供对线条属性(例如线条颜色)的访问
color
brightness
介于 -1.0 和 1.0 之间的浮点值,指示此 颜色的亮度调整,例如-0.25 表示暗 25%, 0.4 表示亮 40%。 0 表示不调整亮度。
rgb
from_string(rgb_hex_str)
RGB 颜色十六进制字 符串返回一个新实例
theme_color
ACCENT_1
ACCENT_2
ACCENT_3
ACCENT_4
ACCENT_5
ACCENT_6
BACKGROUND_1
BACKGROUND_2
DARK_1
DARK_2
FOLLOWED_HYPERLINK
HYPERLINK
超链接用的颜色
LIGHT_1
LIGHT_2
MIXED
NOT_THEME_COLOR
TEXT_1
TEXT_2
type
Read-only
HSL
PRESET
RGB
SCHEME
from pptx.enum.dml import MSO_COLOR_TYPE
assert shape.fill.fore_color.type == MSO_COLOR_TYPE.SCHEME
SCRGB
SYSTEM
dash_style
DASH
DASH_DOT
DASH_DOT_DOT
from pptx.enum.dml import MSO_LINE
from pptx.enum.dml import MSO_LINE
shape.line.dash_style = MSO_LINE.DASH_DOT_DOT
DASH_STYLE_MIXED
LONG_DASH
LONG_DASH_DOT
ROUND_DOT
SOLID
SQUARE_DOT
fill
back_color
返回一个表示背景颜色的 ColorFormat 对象。 此属性仅适用于图案填充和线条。
background()
fore_color
from_fill_parent
gradient()
将填充类型设置为渐变
gradient_angle
gradient_stops
pattern
patterned()
选择图案填充类型
shape.fill.patterned()
shape.fill.fore_color.rgb = RGBColor(255, 0, 255)
shape.fill.fore_color.transparency = 0.25
solid()
type
width
设置线宽
shape.line.width = Cm(2)
shape_type
此形状类型的唯一整数,如 MSO_SHAPE_TYPE.TEXT_BOX
text
形状文本的 str表示
text_frame
包含形状的文本并提供 对文本格式属性的访问
add_paragraph
添加段落
auto_size
clear
fit_text(font_family="Calibri", max_size=18,bold=False, italic=False,font_file=None)
设置文本样式
textbox..text_frame.fit_text(font_family=u'Times New Roman', max_size=13, bold=True, italic=False,font_file=None)
margin_bottom
设置边距
cell.margin_left = Cm(2)
margin_left
margin_right
margin_top
paragraphs
part
text
填充文本
vertical_anchor
word_wrap
as_integer_ratio
bit_length
conjugate
denominator
from_bytes
imag
numerator
real
to_bytes
click_action
element
get_or_add_ln
返回包含此形状的线条格式属性
print(hasattr(shape, 'get_or_add_ln')) # True
has_chart
布尔值
has_table
布尔值
has_text_frame
布尔值
shape = slides1.shapes.add_shape(MSO_SHAPE.DIAMOND, Cm(15), Cm(15), Cm(8), Cm(8))
print(dir(shape))
shape.line.color.rgb = RGBColor(255, 0, 0)
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(255, 0, 255)
shape.fill.fore_color.transparency = 0.25
print(dir(shape.click_action))
print(shape.click_action)
print(shape.element)
print(shape.get_or_add_ln)
点击设置,如:hyperlink', 'part', 'target_slide' print(dir(shape.click_action))
action
PP_ACTION_TYPE 枚举的成员 dir(PP_ACTION)
END_SHOW
FIRST_SLIDE
HYPERLINK
from pptx.enum.action import PP_ACTION
assert shape.click_action.action == PP_ACTION.HYPERLINK
LAST_SLIDE
LAST_SLIDE_VIEWED
NAMED_SLIDE
NAMED_SLIDE_SHOW
NEXT_SLIDE
NONE
OLE_VERB
OPEN_FILE
PLAY
PREVIOUS_SLIDE
RUN_MACRO
RUN_PROGRAM
hyperlink
表示在此单击或悬停鼠标事件上 定义的超链接操作的超链接对象。
address
读/写,超链接的 URL print(dir(shape.click_action.hyperlink.address))
part
from pptx.enum.action import PP_ACTION
shape = slides1.shapes.add_shape(MSO_SHAPE.DIAMOND, Cm(15), Cm(15), Cm(8), Cm(8))
shape.click_action.hyperlink.address = 'https://www.baidu.com'
part
包含此对象的包部分
target_slide
该幻灯片是此形状中幻灯片跳转操作的目标
slide, target_slide = prs.slides[0], prs.slides[1]
shape = slide.shapes[0]
shape.target_slide = target_slide
print(shape.has_chart) # False
print(shape.has_table) # False
print(shape.has_text_frame) # True
shape.height = Cm(10)
shape.width = Cm(20)
print(shape.is_placeholder) # False
print('ok')
shape.left = Cm(5)
shape.top = Cm(25)
print(shape.ln) # 元素
print(shape.name) # Diamond 7
print(shape.part) # <pptx.parts....0x4C0>
print(shape.shadow) # <pptx.dml....0xC0>
shape.rotation = 15.0
print(shape.shape_id) # 8
height
设置形状高度
is_placeholder
布尔值
left
设置形状距离左边的距离
ln
包含线条格式属性,例如线条颜色和宽度。
name
形状名称
part
placeholder_format
rotation
可设置旋转角度 shape.rotation = 15.0
shadow
shape_id
形状的唯一标志符
top
设置形状距离上边的距离
width
设置形状宽度
Picture
auto_shape_type
click_action
crop_bottom
crop_left
1.0 represents 100%. A negative value extends the side beyond the image boundary.
crop_right
裁剪,负值代表挤压图片填充空白,0-1之间
crop_top
pic = slides1.shapes.add_picture(r'test.jpg', Cm(2), Cm(2), Cm(16), Cm(9))
pic.rotation = 45.0
pic.crop_left = -0.5
pic.crop_right = 0.8
pic.crop_top = 0.5
print(pic.height)
print(pic.width)
print(pic.auto_shape_type) # RECTANGLE (1)
element
get_or_add_ln
has_chart
has_table
has_text_frame
height
图片高度
image
图片信息
blob
对前景/背景分离后的二值图像
content_type
dpi
ext
扩展名/后缀
filename
from_blob
pic = slides1.shapes.add_picture(r'test.jpg', Cm(2), Cm(2), Cm(16), Cm(9))
print(pic.image.size) # (600,300)
print(pic.image.dpi) # (72, 72)
print(pic.image.ext) # jpg
print(pic.image.content_type) # image/jpeg
print(pic.image.filename) # test.jpg
print(pic.image.blob) # 对前景/背景分离后的二值图像
print(pic.image.from_blob)
print(pic.image.from_file)
print(pic.image.sha1) # test.jpg
from_file
sha1
SHA-1数据加密算法
size
is_placeholder
left
line
ln
元素包含线条格式属性,例如线条颜色和宽度。
name
part
placeholder_format
rotation
旋转
shadow
shape_id
shape_type
top
width
图片宽度
cell
fill
此单元格的 FillFormat 实例,提供对填充属性(例如前景色)的访问
is_merge_origin
如果该单元格是合并单元格中的左上角,则为True
is_spanned
如果此单元格由合并源单元格跨越,则为True请注意, 对于合并源单元格(is_merge_origin),此值为 False。
table = slides1.shapes.add_table(3,3,Cm(2), Cm(2), Cm(20), Cm(9))
cell = table.table.cell(0, 0)
print(cell.is_merge_origin) # False
print(cell.is_spanned) # False
margin_bottom
单元格的下边距
margin_left
读/写单元格左边距的整数值,作为一个长度值对象。 如果指定为无,则使用默认值,左右边距为0.1英寸, 顶部和底部为0.05英寸。
cell = table.table.cell(0, 0)
cell.margin_left = Cm(2)
cell.margin_top = Cm(2)
margin_right
单元格的右边距
margin_top
单元格的上边距
merge(other_cell)
创建从此单元格到 other_cell 的合并单元格
cell1 = table.table.cell(0, 0)
cell2 = table.table.cell(0, 1)
cell3 = table.table.cell(0, 2)
cell1.merge(cell3)
单元格1,2,3就一起合并
span_height
此单元格跨越的行数
span_width
此单元格跨越的列数
cell1 = table.table.cell(0, 0)
cell3 = table.table.cell(0, 2)
cell1.merge(cell3)
print(cell1.span_height) # 1
print(cell1.span_width) # 3
print(cell3.span_width) # cell3还是1,因为是cell1吧cell3合并了
split()
从此(合并源)单元格中删除合并 Remove merge from this (merge-origin) cell. only a merge-origin cell can be split
cell1 = table.table.cell(0, 0)
cell2 = table.table.cell(0, 1)
cell3 = table.table.cell(0, 2)
cell1.merge(cell3)
cell2或cell3不可以使用split()方法 因为不是merge-origin
text
获取单元格内容
cell = table.table.cell(0, 0) #
tf = cell.text_frame
para = tf.add_paragraph()
para.text = '填入'
para.font.size = Pt(22)
para.alignment = PP_ALIGN.CENTER
print(cell.text) # 填入
text_frame
包含出现在单元格中的文本的 TextFrame 实例
vertical_anchor
此单元格的垂直对齐方式 from pptx.enum.text import MSO_ANCHOR
TOP
MIDDLE
BOTTOM
from pptx.enum.text import MSO_ANCHOR
cell = table.cell(row_idx=2, col_idx=3)
cell.vertical_anchor = MSO_ANCHOR.BOTTOM
MIXED
paragraph
add_line_break()
在本段末尾添加换行符
tf = cell.text_frame
para = tf.add_paragraph()
para.text = '填入'
para.add_line_break()
add_run()
返回附加到本段中的run
font
para.font.bold = True
para1.font.name = '宋体'
hyperlink
address
run.text = 'www.baidu.com'
run.hyperlink.address = 'www.baidu.com'
text
run.text = 'www.baidu.com'
alignment
指定一个或多个段落的水平对齐方式 from pptx.enum.text import PP_ALIGN
CENTER
from pptx.enum.text import PP_ALIGN
shape.paragraphs[0].alignment = PP_ALIGN.CENTER
DISTRIBUTE
JUSTIFY
JUSTIFY_LOW
LEFT
MIXED
RIGHT
THAI_DISTRIBUTE
clear()
删除本段中的所有内容。段落属性被保留。
tf = cell.text_frame
para = tf.add_paragraph()
para.text = '填入'
para.clear()
font
设置字体
bold
para.font.bold = True
color
brightness
from_colorchoice_parent
rgb
para1.font.color.rgb = RGBColor(255,0,0)
theme_color
type
fill
back_color
background
fore_color
from_fill_parent
gradient
gradient_angle
gradient_stops
pattern
patterned
solid
type
italic
para1.font.italic = True
language_id
获取或设置此 Font 实例的语言 ID
name
para1.font.name = '宋体'
size
para1.font.size = Pt(20)
underline
para1.font.underline = True
level
缩进级别,范围为0-8。 0 代表顶级段落,是默认值。
tf = cell.text_frame
para = tf.add_paragraph()
para.level = 5
para.text = '填入'
runs
与本段中的运行相对应的 _Run 对象的不可变序列
line_spacing
指定本段连续行中基线之间的间距的数字或长度值。
1.5 2
Pt(20)
space_after
长度值指定出现在此段落和后续段落之间的间距。
.pt 和 .inches等
tf = cell.text_frame
para1 = tf.add_paragraph()
para1.line_spacing = 2
para1.text = '填入1'
para1.space_after = Pt(50)
para2 = tf.add_paragraph()
para2.text = '填入2'
space_before
长度值指定出现在本段和前一段之间的间距。
text
读写本段文字内容 para.text = '填入' print(para.text)
capitalize()
仅可读 判断是不是大写
para1.text = 'hello'
print(para1.text.capitalize()) # Hello
casefold
center
count
encode
endswith(str)
返回布尔值
para1.text = 'hello'
print(para1.text.endswith('l')) # False
print(para1.text.endswith('o')) # True
expandtabs
find(str)
返回查找到的次数
子主题
para1.text = 'hello'
print(para1.text.find('l')) # 2
print(para1.text.find('e')) # 1
format
format_map
index
返回查找到的第一个索引位置
para1.text = 'hello'
print(para1.text.index('l')) # 2
isalnum
isalpha
判断是不是字母
para1.text = 'hello'
print(para1.text.isalpha()) # True
isascii
isdecimal
isdigit()
判断是不是数字
para1.text = 'hello'
print(para1.text.isdigit()) # False
isidentifier
islower
判断是不是小写
para1.text = 'hello'
print(para1.text.islower()) # True
isnumeric
isprintable
isspace
判断是不是空格
istitle
判断是不是标题
python-pptx-interface
utils
Constants
CreateObject
Generator
Table
TemporaryPPTXFile
dir
filepath
raise_on_delete_error
Union
change_paragraph_text_to
copy_font
has_comptypes
iter_table_cells
os
pptx
action
api
chart
compat
content_type_to_part_class_map
dml
enum
exc
exceptions
media
opc
oxml
package
parts
presentation
shapes
shared
slide
spec
table
text
util
save_as_pdf
在给定的文件名下将演示文稿另存为 pdf
save_as_png
将演示文稿保存为给定文件夹中的 PNG
save_pptx_as_pdf
合并成一个PDF
from pptx_tools import utils
pptfile = r"C:\Users\gyz\Desktop\学术\展示-高玉壮.pptx"
png_folder = r"C:\Users\gyz\Desktop\学术\outimgs"
utils.save_pptx_as_pdf(png_folder, pptfile)
save_pptx_as_png
将ppt转换为图片 每张ppt一页
from pptx_tools import utils
pptfile = r"C:\Users\gyz\Desktop\学术\展示-高玉壮.pptx"
png_folder = r"C:\Users\gyz\Desktop\学术\outimgs"
utils.save_pptx_as_png(png_folder, pptfile, overwrite_folder=True)
tempfile
use_default
better_abc
creator
AbstractTemplate
Inches
Iterable
MSO_AUTO_SIZE
Optional
PPTXCreator
add_content_slide
content_slide = pp.add_content_slide()
add_image
add_latex_formula
add_matplotlib_figure(fig: 'Figure', slide: Slide,position: PPTXPosition = None,zoom: float = 1.0,)
添加matplot图形
add_slide
增加幻灯片
pp = PPTXCreator(TemplateExample())
# 输入幻灯片的标题
pp.add_slide('title')
slide2 = pp.add_slide("page2")
# 如果文件已经存在了要设置overwrite=True
pp.save('pp.pptx',overwrite=True)
add_table
add_text_box
add_title_slide
create_hyperlink
move_slide
remove_unpopulated_shapes
save
新建ppt
from pptx_tools import utils
from pptx_tools.creator import PPTXCreator, PPTXPosition
from pptx_tools.templates import TemplateExample
pp = PPTXCreator(TemplateExample())
pp.save('pp.pptx') # 保存ppt
save_as_pdf
save_as_png
PPTXFontStyle
PPTXPosition
PPTXTableStyle
Path
Picture
Presentation
PurePath
Shape
Slide
SlideLayout
Type
Union
has_matplotlib
io
os
pptx
action
api
chart
compat
content_type_to_part_class_map
dml
enum
exc
exceptions
media
opc
oxml
package
parts
presentation
shapes
shared
slide
spec
table
text
util
utils
enumerations
fill_style
font_style
position
table_style
templates
必须先选solid或patterned,才可以设置fore_color
'adjustments', 'auto_shape_type', 'click_action', 'element', 'fill', 'get_or_add_ln', 'has_chart', 'has_table', 'has_text_frame', 'height', 'is_placeholder', 'left', 'line', 'ln', 'name', 'part', 'placeholder_format', 'rotation', 'shadow', 'shape_id', 'shape_type', 'text', 'text_frame', 'top', 'width'
shape的属性
CategoryChartData
add_category(label)
返回一个新创建的具有标签的Category对象, 并附加到此图表的类别集合的末尾。 label可 以是一个字符串、一个数字、一个datetime.date 或datetime.datetime对象。一个图表中的所有 类别标签必须是相同的类型。一个有多级类别的 图表中的所有类别标签必须是字符串。
add_series(name, values=(), number_format=None)
向该数据集添加一个名为 name 并具有由值指 定的数据点的系列,这是一个可迭代的数值。
categories
提供对该图表数据的类别对象层次的访问, 包含该序列中每个标签的一个类别
values_ref(series)
Excel 工作表对系列值的引用(不包括列标题)
number_format
格式化模板字符串,例如‘#,##0.0’,决定 X 和 Y 值在此图表和 Excel 电子表格中的格式。
善于利用dir(方法)