Skip to main content

生成和操作 Open XML PowerPoint (.pptx) 文件

项目描述

https://travis-ci.org/scanny/python-pptx.svg?branch=master

python-pptx是一个用于创建和更新 PowerPoint (.pptx) 文件的 Python 库。

典型用途是从数据库内容生成定制的 PowerPoint 演示文稿,可通过单击 Web 应用程序中的链接进行下载。一些开发人员已经使用它来根据其工作管理系统中保存的信息自动生成演示就绪的工程状态报告。它还可以用于对演示文稿库进行批量更新,或者仅用于自动制作一两张幻灯片,而这些幻灯片很难手动完成。

更多信息可在python-pptx 文档中找到。

浏览带有屏幕截图的示例,以快速了解您可以使用 python-pptx 做什么。

发布历史

0.6.21 (2021-09-20)

  • 修复 #741 _DirPkgReader 必须实现 .__contains__()

0.6.20 (2021-09-14)

  • 修复 #206 在关系中适应 NULL 目标引用。

  • 修复在 XML 中显示为文字的 #223 转义图像文件名。

  • 修复 #517 选项以相反的顺序显示图表类别/值。

  • 对古老的包加载代码进行重大重构。

0.6.19 (2021-05-17)

  • 添加 shape.add_ole_object(),允许将任意 Excel 或其他二进制文件作为形状嵌入到幻灯片上。OLE 对象表示为一个图标。

0.6.18 (2019-05-02)

  • .text 属性获取器将换行符编码为垂直制表符(VT、'v'、ASCII 11/x0B)。这与 PowerPoint 的复制/粘贴行为一致,并允许将like-breaks(软回车)与段落边界区分开来。以前,换行符被编码为换行符 ('n'),无法与段落边界区分开来。

    .text 属性包括 Shape.text、_Cell.text、TextFrame.text、_Paragraph.text 和 _Run.text。

  • .text 属性设置器接受垂直制表符并在该位置放置一个换行元素。x00-x1F 范围内除水平制表符 ('t') 和换行符 ('n') 之外的所有其他控制字符都被接受并使用纯文本转义,例如 ESC (ASCII 27) 的“_x001B”。

    以前,分配字符串中除制表符或换行符之外的控制字符会触发与无效 XML 字符相关的异常。

0.6.17 (2018-12-16)

  • 添加 SlideLayouts.remove() - 删除未使用的幻灯片布局

  • 添加 SlideLayout.used_by_slides - 根据此幻灯片布局获取幻灯片

  • 添加 SlideLayouts.index() - 获取主幻灯片布局的索引

  • 添加 SlideLayouts.get_by_name() - 通过 str 名称获取幻灯片布局

0.6.16 (2018-11-09)

  • 功能 #395 DataLabels.show_* 属性,例如 .show_percentage

  • 功能 #453 图表数据允许标签无

0.6.15 (2018-09-24)

  • 修复 #436 ValueAxis._cross_xAx 在 c:dateAxis 上失败

0.6.14 (2018-09-24)

  • 添加 _Cell.merge()

  • 添加 _Cell.split()

  • 添加 _Cell.__eq__()

  • 添加 _Cell.is_merge_origin

  • 添加 _Cell.is_spanned

  • 添加 _Cell.span_height

  • 添加 _Cell.span_width

  • 添加 _Cell.text 获取器

  • 添加 Table.iter_cells()

  • 移动 pptx.shapes.table 模块到 pptx.table

  • 添加用户文档“使用表格”

0.6.13 (2018-09-10)

  • 添加图表字体

  • 修复 #293 无法隐藏单系列图表的标题

  • 修复 shape.width 值不是 Emu 类型

  • 修复使用 c:rich 添加 a:defRPr(修复一些字体继承中断)

0.6.12 (2018-08-11)

  • 添加图片.auto_shape_type

  • 从构建中删除 Python 2.6 测试

  • 更新依赖项以避免易受攻击的 Pillow 版本

  • 修复 #260、#301、#382、#401

  • 添加_Paragraph.add_line_break()

  • 添加 Connector.line

0.6.11 (2018-07-25)

  • 添加渐变填充。

  • 添加实验性“turbo-add”选项以生成大型形状计数幻灯片。

0.6.10 (2018-06-11)

  • shape.shadow属性添加到 autoshape、connector、picture 和 group 形状,返回一个ShadowFormat对象。

  • 添加具有读/写(布尔值).inherit属性的ShadowFormat对象。

  • 修复 #328 在图表中添加对 26+ 系列的支持

0.6.9 (2018-05-08)

  • 添加Picture.crop_x设置器,允许设置图片裁剪值,除了询问。

  • 添加Slide.backgroundSlideMaster.background,允许为单个幻灯片或基于幻灯片母版的所有幻灯片设置背景填充。

  • 将选项形状参数添加到Shapes.add_group_shape,允许从多个现有形状形成组形状。

  • 提高Shapes._next_shape_id属性的效率,以提高高形状计数幻灯片的性能。

0.6.8 (2018-04-18)

  • 添加GroupShape,提供特定于组形状的属性,包括其形状属性。

  • 添加GroupShapes,提供对包含在组形状中的形状的访问。

  • 添加SlideShapes.add_group_shape(),允许将组形状添加到幻灯片中。

  • 添加GroupShapes.add_group_shape(),允许将组形状添加到组形状中,从而启用递归、多级组。

  • 添加对添加跳转到命名幻灯片行为以塑造和运行超链接的支持。

0.6.7 (2017-10-30)

  • 添加SlideShapes.build_freeform(),允许指定自由形状(例如地图)并将其添加到幻灯片中。

  • 添加对图案填充的支持。

  • 添加LineFormat.dash_style以允许查询和设置虚线样式。

0.6.6 (2017-06-17)

  • 添加SlideShapes.add_movie(),允许将视频媒体添加到幻灯片中。

  • 修复 #190 容纳具有“00”索引段的不合格零件名称。

  • 修复 #273 容纳没有索引段的不合格零件名称。

  • 修复 #277 非 ASCII 多级类别名称上的 ASCII/Unicode 错误

  • 修复 #279 BaseShape.id 警告出现在占位符访问上。

0.6.5 (2017-03-21)

  • #267 补偿 c:overlay 元素上的不合格 PowerPoint 行为

  • 补偿与 c:dLbl/c:tx 相关的不符合(规范)PowerPoint 行为,当显式数据标签添加到气泡图上的气泡时,会导致“无法保存”错误。

0.6.4 (2017-03-17)

  • 添加 Chart.chart_title 和 ChartTitle 对象

  • #263 使用数字类型测试数字类别

0.6.3 (2017-02-28)

  • 添加 DataLabel.font

  • 添加 Axis.axis_title

0.6.2 (2017-01-03)

  • 添加对 NotesSlide 的支持(幻灯片笔记,又名笔记页面)

  • 在 XML 中添加对任意系列排序的支持

  • 添加 Plot.categories 提供对现有图表中分层类别的访问。

  • 在类别图表上添加对日期轴的支持,包括在 ChartData 类别为日期或日期时间时为类别轴编写 dateAx 元素。

向后不兼容性:

对用于创建新图表的样板 XML 进行了一些更改。这样做是为了更紧密地遵守 PowerPoint 在使用 UI 创建图表时使用的设置。这可能会导致升级后图表的一些外观变化。尤其是:

  • Chart.has_legend 现在对于折线图默认为 True。

  • Plot.vary_by_categories 现在对于折线图默认为 False。

0.6.1 (2016-10-09)

  • 添加连接器形状类型

0.6.0 (2016-08-18)

  • 添加 XY 图表类型

  • 添加气泡图类型

  • 添加雷达图类型

  • 添加面积图类型

  • 添加圆环图类型

  • 添加 Series.points 和 Point

  • 添加 Point.data_label

  • 添加 DataLabel.text_frame

  • 添加 DataLabel.position

  • 添加 Axis.major_gridlines

  • 使用 .fill 和 .line 添加 ChartFormat

  • 添加 Axis.format(填充和线条格式)

  • 添加 ValueAxis.crosses 和 .crosses_at

  • 添加 Point.format (填充和线条格式)

  • 添加 Slide.slide_id

  • 添加 Slides.get() (通过幻灯片 ID)

  • 添加 Font.language_id

  • 支持创建图表中的空白(无)数据点

  • 添加 Series.marker

  • 添加 Point.marker

  • 添加 Marker.format、.style 和 .size

0.5.8 (2015-11-27)

  • 添加 Shape.click_action(形状上的超链接)

  • 修复:#128 图表 cat 和 ser 名称未转义

  • 修复:#153shapes.title 在没有标题形状时引发

  • fix: #170 从 Image.from_file() 中删除 seek(0)

0.5.7 (2015-01-17)

  • 使用 .insert_picture() 方法添加 PicturePlaceholder

  • 使用 .insert_table() 方法添加 TablePlaceholder

  • 使用 .insert_chart() 方法添加 ChartPlaceholder

  • 添加 Picture.image 属性,返回 Image 对象

  • 添加 Picture.crop_left、.crop_top、.crop_right 和 .crop_bottom

  • 添加 Shape.placeholder_format 和 PlaceholderFormat 对象

向后不兼容性:

Shape.shape_type 现在无条件地为所有占位符形状的MSO_SHAPE_TYPE.PLACEHOLDER 。以前,一些占位符形状报告 了该属性的MSO_SHAPE_TYPE.AUTO_SHAPEMSO_SHAPE_TYPE.CHARTMSO_SHAPE_TYPE.PICTUREMSO_SHAPE_TYPE.TABLE

0.5.6 (2014-12-06)

  • 修复 #138 - Windows 7 Python 3.4 上 setup.py 中的 UnicodeDecodeError

0.5.5 (2014-11-17)

  • 功能 #51 - 添加 Python 3 支持

0.5.4 (2014-11-15)

  • 功能 #43 - 现在根据图像文件中的 DPI 属性计算 shape.add_picture() 中的图像原生大小,如果存在,则默认为 72 dpi。

  • 功能 #113 - 添加 Paragraph.space_before、Paragraph.space_after 和 Paragraph.line_spacing

0.5.3 (2014-11-09)

  • 添加实验功能 TextFrame.fit_text()

0.5.2 (2014-10-26)

  • 修复 #127 - Shape.text_frame 在没有 txBody 的形状上失败

0.5.1 (2014-09-22)

  • 功能 #120 - 添加 Shape.rotation

  • 功能 #97 - 添加 Font.underline

  • 问题 #117 - 添加 BMP 图像支持

  • 问题 #95 - 添加 BaseShape.name 设置器

  • 问题 #107 - 所有 .text 属性都应该返回 unicode,而不是 str

  • 功能 #106 - 将 .text getter 添加到 Shape、TextFrame 和 Paragraph

  • 将 Shape.textframe 重命名为 Shape.text_frame。 不推荐使用 Shape.textframe 属性(按该名称)。

0.5.0 (2014-09-13)

  • 添加对创建和操作条形图、柱形图、折线图和饼图的支持

  • XML层(oxml)的主要重构

  • 合理化的图形对象形状访问 注意下面的向后不兼容性

向后不兼容性:

表格不再被视为形状。相反,它是包含在 GraphicFrame 形状中的图形对象,Chart 和 SmartArt 对象也是如此。

例子:

table = shapes.add_table(...)

# becomes

graphic_frame = shapes.add_table(...)
table = graphic_frame.table

# or

table = shapes.add_table(...).table

作为封闭形状,id、名称、形状类型、位置和大小是封闭 GraphicFrame 对象的属性。

可以使用形状上的三个可用属性来识别 GraphicFrame 形状的内容:has_table、has_chart 和 has_smart_art。使用属性GraphicFrame.table 和GraphicFrame.chart 获得封闭的图形对象。尚不支持 SmartArt。在不包含相应对象的 GraphicFrame 上访问这些属性之一会引发异常。

0.4.2 (2014-04-29)

  • 修复:问题 #88 – 引发支持的具有大写扩展名的图像文件

  • 修复:问题 #89 - 在 add_slide() 不连续的现有 id 上引发

0.4.1 (2014-04-29)

  • 将 Presentation.slidemasters 重命名为 Presentation.slide_masters。Presentation.slidemasters 属性已弃用。

  • 将 Presentation.slidelayouts 重命名为 Presentation.slide_layouts。Presentation.slidelayouts 属性已弃用。

  • 将 SlideMaster.slidelayouts 重命名为 SlideMaster.slide_layouts。SlideMaster.slidelayouts 属性已弃用。

  • 将 SlideLayout.slidemaster 重命名为 SlideLayout.slide_master。SlideLayout.slidemaster 属性已弃用。

  • 将 Slide.slidelayout 重命名为 Slide.slide_layout。Slide.slidelayout 属性已弃用。

  • 添加 SlideMaster.shapes 以访问幻灯片母版上的形状。

  • 添加 SlideMaster.placeholders 以访问幻灯片母版上的占位符形状。

  • 添加 _MasterPlaceholder 类。

  • 添加 _LayoutPlaceholder 类,其位置和大小可从主占位符继承。

  • 添加 _SlidePlaceholder 类,其位置和大小可从布局占位符继承。

  • 添加 Table.left、top、width 和 height 读/写属性。

  • 添加具有 left、top、width 和 height 属性的基本 GroupShape。

  • 添加具有左侧、顶部、宽度和高度属性的基本连接器。

  • 添加 TextFrame.auto_size 属性。

  • 添加 Presentation.slide_width 和 .slide_height 读/写属性。

  • 添加 LineFormat 类,提供读取和更改线条颜色和宽度的访问权限。

  • 添加自选图形.line

  • 添加图片.line

  • 合理化枚举。请注意下面的向后不兼容性

向后不兼容性:

在枚举合理化期间,以下枚举被移动/重命名:

  • pptx.enum.MSO_COLOR_TYPE -> pptx.enum.dml.MSO_COLOR_TYPE

  • pptx.enum.MSO_FILL -> pptx.enum.dml.MSO_FILL

  • pptx.enum.MSO_THEME_COLOR -> pptx.enum.dml.MSO_THEME_COLOR

  • pptx.constants.MSO.ANCHOR_* –> pptx.enum.text.MSO_ANCHOR.*

  • pptx.constants.MSO_SHAPE -> pptx.enum.shapes.MSO_SHAPE

  • pptx.constants.PP.ALIGN_* –> pptx.enum.text.PP_ALIGN.*

  • pptx.constants.MSO.{SHAPE_TYPES} -> pptx.enum.shapes.MSO_SHAPE_TYPE.*

用户指南的枚举部分中提供了所有枚举的文档。

0.3.2 (2014-02-07)

  • 修补程序:问题 #80 生成的演示文稿无法在 Keynote 和其他 Apple 应用程序中加载

0.3.1 (2014-01-10)

  • 修补程序:无法加载包含带有大写扩展名的图像的某些演示文稿

0.3.0 (2013-12-12)

  • 添加支持RGB、主题颜色和继承颜色类型的读/写字体颜色属性

  • 添加字体字体和斜体支持

  • 添加文本框边距和自动换行

  • 添加对外部关系的支持,例如链接电子表格

  • 为形状和表格单元格中的文本添加超链接支持

  • 为形状和表格单元格添加填充颜色和亮度,填充也可以设置为透明(无填充)

  • 为形状和图片添加读/写位置和大小属性

  • 用 Pillow 替换 PIL 依赖项

  • 重组模块以更好地适应库的大小

0.2.6 (2013-06-22)

  • 添加对核心文档属性的读/写访问权限

  • 在 _AutoShapeType 中适应连接器形状的修补程序

  • 允许在存在时加载 customXml 部件的修补程序

0.2.5 (2013-06-11)

  • 添加段落对齐属性(左、右、居中等)

  • 在表格单元格内添加垂直对齐(顶部、中间、底部)

  • 添加表格单元格边距属性

  • 添加表布尔属性:第一列(行标题)、第一行(列标题)、最后一行(例如总计行)、最后一列(例如行总计)、水平条带和垂直条带。

  • 添加对自动形状调整值的支持,例如更改圆角矩形上的圆角半径、标注箭头的位置等。

0.2.4 (2013-05-16)

  • 添加对自动形状的支持(例如多边形、流程图符号等)

0.2.3 (2013-05-05)

  • 添加对表格形状的支持

  • 为文本框形状添加缩进支持,在子弹幻灯片上启用多级项目符号。

0.2.2 (2013-03-25)

  • 添加对从/向类文件对象打开和保存演示文稿的支持。

  • 重构 XML 处理以使用 lxml 对象化

0.2.1 (2013-02-25)

  • 添加对 Python 2.6 的支持

  • 除了路径之外,还可以从流(例如 StringIO)中添加图像,从而允许插入从数据库或网络资源中检索到的图像而无需先保存。

  • 扩展文本方法以接受 unicode 和 UTF-8 编码的 8 位字符串。

  • 修复从包__init__.py文件导入__version__触发的潜在安装错误。

0.2.0 (2013-02-10)

第一个具有基本功能的非 alpha 版本:

  • 打开演示文稿/模板或使用内置的默认模板

  • 添加幻灯片

  • 设置占位符文本(例如子弹幻灯片)

  • 添加图片

  • 添加文本框

项目详情