ole 允许用户将各种文件类型(如图像、图表、文档和多媒体)直接嵌入到 excel 工作簿中,从而促进了信息的更加动态和全面的呈现。通过插入 ole 对象,用户可以创建交互式和引人注目的电子表格,将各种数据格式集成到一个 excel 环境中,以简化分析和演示过程。在本文中,我们将探讨如何使用 spire.xls for python 在 python 中插入链接或嵌入式 ole 对象到 excel 以及从 excel 中提取 ole 对象。
安装 spire.xls for python
本教程需要 spire.xls for python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.xls
如果您不确定如何安装,请参考此教程: 如何在 vs code 中安装 spire.xls for python
python 插入链接型的 ole 对象到 excel
要将 ole 对象插入工作表中,您可以使用 worksheet.oleobjects.add(filename, image, linktype) 方法,其中:
- filename 参数指定要插入的外部文件的路径,
- image 参数指定 ole 对象显示为的缩略图或文档图标,
- linktype 参数确定 ole 对象是作为嵌入源还是链接源插入到文档中。
以下是使用 spire.xls for python 将链接型的 ole 对象插入到 excel 的步骤:
- 创建一个 workbook 对象。
- 通过 workbook.worksheets[index] 属性获取第一个工作表。
- 使用 image.fromfile() 方法加载一个图像。
- 使用 worksheet.oleobjects.add() 方法向工作表插入 ole 对象,并将链接类型设置为 olelinktype.link。
- 通过 ioleobject.location 属性指定 ole 对象的位置。
- 通过 ioleobject.objecttype 属性指定 ole 对象的类型
- 使用 workbook.savetofile() 方法将工作簿保存为 excel 文件。
- python
from spire.xls import *
from spire.xls.common import *
# 创建 workbook 对象
workbook = workbook()
# 获取第一个工作表对象
sheet = workbook.worksheets[0]
# 在单元格 a1 中设置文本内容
sheet.range["a1"].text = "这是一个ole对象。"
# 从文件加载图像数据
image = image.fromfile("image1.png")
# 使用流将图像保存为 png 格式并获取流对象
with stream() as stream:
image.save(stream, imageformat.get_png())
# 在工作表中添加 ole 对象,指定链接类型和流对象
oleobject = sheet.oleobjects.add("word文档.docx", stream, olelinktype.link)
# 设置 ole 对象的位置为 b3 单元格
oleobject.location = sheet.range["b3"]
# 设置 ole 对象的对象类型为 word 文档
oleobject.objecttype = oleobjecttype.worddocument
# 将更改后的工作簿保存为文件,使用 excelversion.version2016 格式
workbook.savetofile("ole对象.xlsx", excelversion.version2016)
# 释放 workbook 对象所占用的资源
workbook.dispose()
python 插入嵌入型的 ole 对象到 excel
要将嵌入型的 ole 对象插入到 excel 中,您可以在调用 worksheet.oleobjects.add() 方法时将链接类型设置为 olelinktype.embed。详细步骤如下:
- 创建一个 workbook 对象。
- 通过 workbook.worksheets[index] 属性获取第一个工作表。
- 使用 image.fromfile() 方法加载一个图像。
- 使用 worksheet.oleobjects.add() 方法向工作表插入 ole 对象,并将链接类型设置为 olelinktype.embed 。
- 通过 ioleobject.location 属性指定 ole 对象的位置
- 通过 ioleobject.objecttype 属性指定 ole 对象的类型。
- 使用 workbook.savetofile() 方法将工作簿保存为另一个 excel 文件。
- python
from spire.xls import *
from spire.xls.common import *
# 创建 workbook 对象
workbook = workbook()
# 获取第一个工作表对象
sheet = workbook.worksheets[0]
# 在单元格 a1 中设置文本内容
sheet.range["a1"].text = "这是一个ole对象。"
# 从文件加载图像数据
image = image.fromfile("image2.png")
# 使用流将图像保存为 png 格式并获取流对象
with stream() as stream:
image.save(stream, imageformat.get_png())
# 在工作表中添加嵌入式 ole 对象,指定链接类型和流对象
oleobject = sheet.oleobjects.add("word文档.docx", stream, olelinktype.embed)
# 设置 ole 对象的位置为 b3 单元格
oleobject.location = sheet.range["b3"]
# 设置 ole 对象的对象类型为 word 文档
oleobject.objecttype = oleobjecttype.worddocument
# 将更改后的工作簿保存为文件,使用 excelversion.version2016 格式
workbook.savetofile("ole对象2.xlsx", excelversion.version2016)
# 释放 workbook 对象所占用的资源
workbook.dispose()
python 从 excel 中提取 ole 对象
spire.xls for python 提供了 worksheet.hasoleobjects 属性来确定工作表是否包含 ole 对象。如果存在,可以通过 worksheet.oleobjects 属性获取所有对象。然后,确定特定 ole 对象的类型,并将 ole 保存为适当文档类型的文件。以下是使用 spire.xls for python 从 excel 中提取 ole 对象的步骤。
- 创建一个 workbook 对象。
- 使用 workbook.loadfromfile() 方法加载一个 excel 文件。
- 通过 workbook.worksheets[index] 属性获取特定的工作表。
- 通过 worksheet.hasoleobjects 属性确定工作表是否包含 ole 对象。
- 通过 worksheet.oleobjects 属性从工作表获取所有 ole 对象。
- 确定特定 ole 对象的类型,并将 ole 保存为适当文档类型的文件。
- python
from spire.xls import *
from spire.xls.common import *
# 定义一个将数据写入文件的函数
def writeallbytes(fname:str, data):
# 打开文件以二进制写入模式
fp = open(fname, "wb")
# 遍历数据并写入文件
for d in data:
fp.write(d)
# 关闭文件
fp.close()
# 创建 workbook 对象
workbook = workbook()
# 加载 excel 文件
workbook.loadfromfile("ole对象文档.xlsx")
# 获取第一个工作表对象
sheet = workbook.worksheets[0]
# 检查工作表是否包含 ole 对象
if sheet.hasoleobjects:
# 遍历工作表中的所有 ole 对象
for obj in sheet.oleobjects:
# 获取 ole 对象的类型
type = obj.objecttype
# 如果对象类型是 word 文档
if type is oleobjecttype.worddocument:
# 将 ole 对象的数据写入 word 文档文件
writeallbytes("output/word-extracted.docx", obj.oledata)
# 如果对象类型是 adobe acrobat 文档
if type is oleobjecttype.adobeacrobatdocument:
# 将 ole 对象的数据写入 pdf 文件
writeallbytes("output/pdf-extracted.pdf", obj.oledata)
# 如果对象类型是 powerpoint 演示文稿
if type is oleobjecttype.powerpointpresentation:
# 将 ole 对象的数据写入 powerpoint 文件
writeallbytes("output/ppt-extracted.pptx", obj.oledata)
# 释放 workbook 对象所占用的资源
workbook.dispose()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。