添加 ole 对象到 powerpoint 中的好处主要包括集成多种数据类型、增强交互性和动态性、提高工作效率、保持内容更新、增强视觉效果以及简化复杂流程。这些好处使得 ole 对象成为 powerpoint 中一种强大且灵活的工具,有助于创建更加生动、专业且高效的演示文稿。在本文中,我们将详细介绍如何使用 spire.presentation for python 在 python 中向 powerpoint 演示文稿插入、提取或修改 ole 对象。
安装 spire.presentation for python
本教程需要用到 spire.presentation for python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.presentation
如果您不确定如何安装,请参考此教程: 如何在 vs code 中安装 spire.presentation for python
python 在 powerpoint 中插入 ole 对象
spire.presentation for python 提供了 ishape.appendoleobject() 方法,用于在 powerpoint 演示文稿中插入 ole 对象。详细步骤如下:
- 创建一个 presentation 对象。
- 使用 presentation.slides[index] 属性获取要添加 ole 对象的幻灯片。
- 使用 ishape.appendoleobject() 方法向幻灯片添加 ole 对象。
- 使用 ioleobject.substituteimagepicturefillformat.picture.embedimage 设置 ole 的嵌入图片。
- 使用 ioleobject.progid 设置 ole 的对象类型。
- 使用 presentation.savetofile() 方法保存结果演示文稿。
- python
from spire.presentation.common import *
from spire.presentation import *
# 创建一个新的 powerpoint 演示文稿对象
ppt = presentation()
slide = ppt.slides[0]
# 从流中添加 excel 图像
excelimagestream = stream("excel.png")
oleimage = ppt.images.appendstream(excelimagestream)
excelimagestream.close()
# 设置位置并将excel文件添加到ole中
excelrec = rectanglef.fromltrb(100, 60, oleimage.width 100, oleimage.height 60)
olestream = stream("excel文件.xlsx")
oleobject = slide.shapes.appendoleobject("excel", olestream, excelrec)
oleobject.substituteimagepicturefillformat.picture.embedimage = oleimage
oleobject.progid = "excel.sheet.12"
# 从流中添加 zip 图像
zipimagestream = stream("zip.png")
zipoleimage = ppt.images.appendstream(zipimagestream)
zipimagestream.close()
# 设置位置并将zip文件添加到ole中
ziprec = rectanglef.fromltrb(100, oleimage.height 100, zipoleimage.width 100, zipoleimage.height oleimage.height 100)
zipolestream = stream("展示ppt.zip")
zipoleobject = slide.shapes.appendoleobject("zippackage", zipolestream, ziprec)
zipoleobject.progid = "package"
zipoleobject.substituteimagepicturefillformat.picture.embedimage = zipoleimage
# 关闭流
olestream.close()
zipolestream.close()
# 保存 powerpoint 演示文稿
ppt.savetofile("添加ole对象.pptx", fileformat.pptx2010)
ppt.dispose()
python 提取 powerpoint 中的 ole 对象
如果您喜欢 powerpoint 演示文稿中嵌入的 ole 对象,并想在其他地方使用它们,可以将它们提取出来并保存到指定的磁盘中。以下步骤详细演示了如何从 powerpoint 中提取ole对象:
- 创建一个 presentation 对象。
- 使用 presentation.loadfromfile() 方法加载一个 powerpoint 演示文稿。
- 遍历 powerpoint 的所有幻灯片。
- 遍历每一张幻灯片上的所有 shape。
- 判断 shape 是否为 ole 对象。
- 通过 ioleobject.progid 确定 ole 对象的类型,并将 ole 保存为对应的文档类型的文件。
- python
from spire.presentation.common import *
from spire.presentation import *
# 设置输出文件路径
outputfile_px = "提取ole/extractoleobject.pptx"
outputfile_p = "提取ole/extractoleobject.ppt"
outputfile_xls = "提取ole/extractoleobject.xls"
outputfile_xlsx = "提取ole/extractoleobject.xlsx"
outputfile_doc = "提取ole/extractoleobject.doc"
outputfile_docx = "提取ole/extractoleobject.docx"
outputfile_zip = "提取ole/extractoleobject.zip"
# 创建 powerpoint 演示文稿对象
presentation = presentation()
# 加载带有 ole 对象的 powerpoint 演示文稿
presentation.loadfromfile("提取ole.pptx")
# 遍历每一页的shape
for slide in presentation.slides:
for shape in slide.shapes:
# 检查shape是否为 ole 对象
if isinstance(shape, ioleobject):
oleobject = shape if isinstance(shape, ioleobject) else none
stream = oleobject.data
# 根据不同的 progid 保存不同类型的文件
if oleobject.progid == "excel.sheet.8":
stream.save(outputfile_xls)
elif oleobject.progid == "excel.sheet.12":
stream.save(outputfile_xlsx)
elif oleobject.progid == "word.document.8":
stream.save(outputfile_doc)
elif oleobject.progid == "word.document.12":
stream.save(outputfile_docx)
elif oleobject.progid == "powerpoint.show.8":
stream.save(outputfile_p)
elif oleobject.progid == "powerpoint.show.12":
stream.save(outputfile_px)
elif oleobject.progid == "package":
stream.save(outputfile_zip)
stream.dispose()
# 释放资源
presentation.dispose()
python 修改 powerpoint 中 ole 对象的数据
通过修改 powerpoint 中 ole 对象的数据,您可以使演示更具活力、实用性和个性化,为观众呈现更加精彩和引人入胜的演示内容。具体实现步骤如下:
- 创建一个 presentation 对象。
- 使用 presentation.loadfromfile() 方法加载一个 powerpoint 演示文稿。
- 遍历 powerpoint 的所有幻灯片。
- 遍历每一张幻灯片上的所有 shape。
- 判断 shape 是否为 ole 对象。如果是,则获取 ole 对象的数据 ioleobject.data。
- 通过 ioleobject.progid 确定 ole 对象的类型,并新建对应文档类型的实例化对象加载获取到的 ole 数据。
- 修改 ole 数据后文件保存到流中,并将流数据赋值给源 ole 数据。
- 使用 presentation.savetofile() 方法保存结果演示文稿。
- python
from spire.presentation.common import *
from spire.presentation import *
# 创建一个新的 powerpoint 演示文稿对象
presentation = presentation()
# 加载示例文档
presentation.loadfromfile("示例文档.pptx")
# 遍历每一页的shape
for slide in presentation.slides:
for shape in slide.shapes:
# 检查shape是否为 ole 对象
if isinstance(shape, ioleobject):
oleobject = shape if isinstance(shape, ioleobject) else none
stream = oleobject.data
stream2 = stream()
# 如果是 powerpoint 文件对象
if oleobject.progid == "powerpoint.show.12":
# 创建一个新的 powerpoint 对象
ppt = presentation()
ppt.loadfromstream(stream, fileformat.auto)
# 向第一页添加嵌入图像
ppt.slides[0].shapes.appendembedimagebypath(shapetype.rectangle, "logo.png", rectanglef.fromltrb(567, 267, 657, 367))
# 保存修改后的 powerpoint 文件到流中
ppt.savetofile(stream2, fileformat.pptx2013)
stream2.position = 0
oleobject.data = stream2
# 保存修改后的 powerpoint 演示文稿
presentation.savetofile("修改ole数据.pptx", fileformat.pptx2013)
presentation.dispose()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。