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 命令将它们轻松安装到 Windows 中。
pip install Spire.Doc
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 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 天的临时许可证。