ole 对象是一种可以插入到文档中的来自其他应用程序的文件或数据。这些对象可以是 excel 表格、幻灯片、pdf文档、图像、音频、视频等。通过将 ole 对象插入到 word 文档中,您可以在文档中直接打开、编辑和操作这些对象,而无需打开原始文件或应用程序。在这篇文章中,我们将介绍如何使用 python 和 spire.doc for python 在 word 文档中插入和提取 ole 对象。
安装 spire.doc for python
本教程需要 spire.doc for python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.doc
如果您不确定如何安装,请参考此教程: 如何在 vs code 中安装 spire.doc for python
python 在 word 中插入 ole 对象
spire.doc for python 提供了 paragraph.appendoleobject(pathtofile:str, olepicture:docpicture, type:oleobjecttype) 方法,用于在 word 文档中嵌入 ole 对象。具体步骤如下:
- 创建 document 类的对象。
- 使用 document.loadfromfile() 方法加载 word 文档。
- 使用 document.sections.get_item(index) 方法获取特定的节。
- 使用 section.addparagraph() 方法向节中添加一个段落。
- 创建一个 docpicture 类的对象。
- 使用 docpicture.loadimage() 方法加载一张图片作为 ole 对象的图标,然后设置图片的宽度和高度。
- 使用 paragraph.appendoleobject(pathtofile:str, olepicture:docpicture, type:oleobjecttype) 方法将 ole 对象添加到段落。
- 使用 document.savetofile() 方法保存结果文件。
以下代码示例展示了如何使用 spire.doc for python 在 word 文档中嵌入 excel 电子表格、pdf 文件和 powerpoint 演示文稿:
- python
from spire.doc import *
from spire.doc.common import *
# 创建document类的对象
doc = document()
# 加载word文档
doc.loadfromfile("示例.docx")
# 获取第一个节
section = doc.sections.get_item(0)
# 向节添加一个段落
para1 = section.addparagraph()
para1.appendtext("excel文件: ")
# 加载一张图片作为ole对象的图标
picture1 = docpicture(doc)
picture1.loadimage("excel图标.png")
picture1.width = 50
picture1.height = 50
# 向段落附加一个ole对象(excel文件)
para1.appendoleobject("预算.xlsx", picture1, oleobjecttype.excelworksheet)
# 向节添加一个段落
para2 = section.addparagraph()
para2.appendtext("pdf文件: ")
# 加载将用作ole对象封面图像的图像
picture2 = docpicture(doc)
picture2.loadimage("pdf图标.png")
picture2.width = 50
picture2.height = 50
# 向段落附加一个ole对象(pdf文件)
para2.appendoleobject("report.pdf", picture2, oleobjecttype.adobeacrobatdocument)
# 向节添加一个段落
para3 = section.addparagraph()
para3.appendtext("ppt文件: ")
# 加载将用作ole对象封面图像的图像
picture3 = docpicture(doc)
picture3.loadimage("ppt-icon.png")
picture3.width = 50
picture3.height = 50
# 向段落附加一个ole对象(powerpoint演示文稿)
para3.appendoleobject("input.pptx", picture3, oleobjecttype.powerpointpresentation)
doc.savetofile("插入ole.docx", fileformat.docx2013)
doc.close()
python 从 word 中提取 ole 对象
要从 word 文档中提取 ole 对象,首先需要识别出文档中的 ole 对象。识别后,可以判断每个 ole 对象的文件格式,最后将每个 ole 对象的数据以其原生文件格式保存到文件中。具体步骤如下:
- 创建 document 类的实例。
- 使用 document.loadfromfile() 方法加载 word 文档。
- 遍历文档的所有节。
- 遍历每个节中的所有子对象。
- 找到每个节中的段落。
- 遍历每个段落中的子对象。
- 找到段落中的 ole 对象。
- 确定 ole 对象的文件格式。
- 将 ole 对象的数据以其原生文件格式保存到文件中。
以下代码示例展示了如何使用 spire.doc for python 从 word 文档中提取嵌入的 excel 表格、pdf 文件和 powerpoint 演示文稿:
- python
from spire.doc import *
from spire.doc.common import *
# 创建document类的对象
doc = document()
# 加载word文档
doc.loadfromfile("插入ole.docx")
i = 1
# 遍历word文档的所有节
for k in range(doc.sections.count):
sec = doc.sections.get_item(k)
# 遍历每个节的所有子对象
for j in range(sec.body.childobjects.count):
obj = sec.body.childobjects.get_item(j)
# 检查子对象是否为段落
if isinstance(obj, paragraph):
par = obj if isinstance(obj, paragraph) else none
# 遍历段落中的子对象
for m in range(par.childobjects.count):
o = par.childobjects.get_item(m)
# 检查子对象是否为ole对象
if o.documentobjecttype == documentobjecttype.oleobject:
ole = o if isinstance(o, docoleobject) else none
s = ole.objecttype
# 检查ole对象是否为pdf文件
if s.startswith("acroexch.document"):
ext = ".pdf"
# 检查ole对象是否为excel表格
elif s.startswith("excel.sheet"):
ext = ".xlsx"
# 检查ole对象是否为powerpoint演示文稿
elif s.startswith("powerpoint.show"):
ext = ".pptx"
else:
continue
# 将ole的数据以其原生格式写入文件
with open(f"output/ole{i}{ext}", "wb") as file:
file.write(ole.nativedata)
i = 1
doc.close()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。