如何在 Excel 中插入和嵌入文件?使用 Python 添加图片及 OLE 对象
Excel 不仅可以用来记录和分析数据,还能通过插入图片、嵌入文档等方式,让工作簿包含更多信息。比如,在产品清单中添加商品图片,在项目报表中嵌入 PDF 说明书,或者在设备档案中附上相关技术文档。这样一来,相关资料就不必分散存放在多个文件夹中,查看和管理起来也更加方便。
不过,如果需要在 Excel 中添加大量图片或附件,逐个手动插入显然不够高效。尤其是在批量生成报表、自动整理资料等场景下,通过 Python 处理 Excel 文件会更加方便。
那么,如何在 Excel 中插入图片和嵌入其他文件?本文将介绍几种常见的操作方法,包括 Excel 自带的插入功能,以及使用 Spire.XLS for Python 通过代码添加图片和 OLE 对象。
方案一:使用 Excel 自带功能插入图片和嵌入文件
如果只是偶尔需要在 Excel 中添加几张图片或几个附件,直接使用 Excel 自带的功能就足够了。它不需要安装额外的工具,也不需要编写代码,适合日常办公和少量文件处理。
1. 在 Excel 中插入图片
在产品清单、员工信息表或数据报表中,图片通常用于展示商品外观、人员照片或其他辅助信息。Excel 支持将图片直接插入工作表,并允许用户调整图片的位置和大小。
操作步骤:
- 第一步,打开 Excel 工作簿,选择需要添加图片的工作表。
- 第二步,点击顶部菜单栏的 插入 -> 图片 -> 此设备。
- 第三步,在文件选择窗口中找到需要插入的图片,选中后点击插入。
- 第四步,选中图片,通过拖动边框调整图片大小,并将其移动到合适的位置。
- 第五步,如果需要让图片与单元格保持对应关系,可以在图片上右键,选择 设置图片格式 -> 大小与属性,根据需要调整图片随单元格移动或调整大小的方式。
特点分析: 这种方式操作直观,支持常见图片格式,也可以直接通过鼠标调整图片的位置和尺寸。不过,手动插入图片需要逐个选择文件,如果工作表中有几十甚至上百张图片,操作起来就比较繁琐,也不适合自动化生成报表。
2. 在 Excel 中嵌入其他文件
除了图片,Excel 还支持通过 OLE(对象链接与嵌入)功能添加 Word、PDF、PowerPoint 等文件。与普通超链接不同,嵌入文件可以将源文件数据保存在工作簿中,用户双击工作表中的对象图标,就可以尝试调用相应程序打开文件。
操作步骤:
-
第一步,打开 Excel 工作簿,选择需要嵌入文件的工作表。
-
第二步,点击 插入 -> 文本 -> 对象。
-
第三步,在弹出的窗口中选择 由文件创建。
-
第四步,点击浏览,找到需要添加的文件并选中。
-
第五步,根据需要选择 显示为图标,让文件以图标形式显示在工作表中。
-
第六步,点击确定,完成文件插入。
如果不希望文件本身保存在 Excel 工作簿中,也可以勾选 链接到文件。这样,Excel 会通过外部文件路径引用源文件,而不是将其完整嵌入工作簿。
特点分析: Excel 自带的 OLE 功能可以将不同类型的文件集中到一个工作簿中,方便统一管理和查看。但需要注意,嵌入文件会增加工作簿的体积;如果使用链接方式,源文件的位置或名称发生变化,也可能导致链接失效。此外,这种方法仍然需要手动选择文件,不适合大量附件的批量处理。
方案二:使用 Python 在 Excel 中插入和嵌入文件
如果需要批量处理 Excel 图片,或者根据业务数据自动向工作簿中添加不同的附件,使用 Python 会更加灵活。
这里可以借助 Spire.XLS for Python。它是一款用于 Excel 文档处理的 Python 库,支持工作簿、工作表、单元格、图片和 OLE 对象等内容的操作。通过它,我们可以在不依赖 Excel 界面手动操作的情况下,使用代码完成图片插入和文件嵌入。
1. 安装 Spire.XLS for Python
在开始之前,需要先安装 Spire.XLS for Python。打开终端或命令提示符,执行以下命令:
pip install Spire.XLS
安装完成后,在 Python 脚本中导入相关模块:
from spire.xls import *
from spire.xls.common import *
2. 使用 Python 在 Excel 中插入图片
假设我们有一份产品清单,需要在对应的工作表中添加商品图片。使用 Spire.XLS for Python,可以通过 Worksheet.Pictures.Add() 方法将图片插入指定行列位置,并进一步调整图片的大小和位置。
操作步骤:
-
第一步,创建
Workbook对象。 -
第二步,获取需要插入图片的工作表。
-
第三步,调用
Pictures.Add()方法,将图片添加到指定行列位置。 -
第四步,设置图片的宽度和高度,并根据需要调整单元格尺寸。
-
第五步,保存工作簿。
完整代码:
from spire.xls import *
from spire.xls.common import *
# 创建 Workbook 对象
workbook = Workbook()
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 插入图片
picture = sheet.Pictures.Add(1, 3, "product.png")
# 设置图片大小
picture.Width = 150
picture.Height = 150
# 调整列宽和行高
sheet.Columns[2].ColumnWidth = 25
sheet.Rows[0].RowHeight = 135
# 设置图片与单元格边框之间的距离
picture.LeftColumnOffset = 90
picture.TopRowOffset = 20
# 保存工作簿
workbook.SaveToFile("InsertImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
运行代码后,图片就会被插入工作表中指定的位置,并按照设置的尺寸显示。
特点分析: 相比手动插入图片,使用 Python 可以更方便地控制图片的位置和尺寸,也可以将图片插入操作整合到现有的数据处理脚本中。如果需要批量生成产品清单或员工档案,还可以通过循环读取图片路径,将多张图片添加到不同的单元格附近。不过,需要注意的是,图片的位置和大小需要结合工作表的行高、列宽进行调整,避免图片与其他数据重叠。
3. 使用 Python 在 Excel 中嵌入文件
除了图片,Spire.XLS for Python 还支持通过 OLE 对象将外部文件嵌入 Excel 工作表。例如,可以将 PDF 产品说明书、Word 技术文档或 PowerPoint 演示文件添加到工作簿中,方便用户在查看数据时访问相关资料。
在 Spire.XLS for Python 中,可以使用 Worksheet.OleObjects.Add() 方法添加 OLE 对象。该方法主要涉及三个参数:
fileName:需要插入的外部文件路径。image:用于在工作表中显示的对象图标或预览图片。linkType:指定对象是嵌入到工作簿中,还是链接到外部文件。
其中,OleLinkType.Embed 表示嵌入文件,OleLinkType.Link 表示链接文件。
操作步骤:
-
第一步,创建
Workbook对象并获取目标工作表。 -
第二步,使用
Image.FromFile()加载一张用于表示文件对象的图标或预览图片。 -
第三步,将图片保存到
Stream对象中。 -
第四步,调用
OleObjects.Add()方法,将外部文件添加到工作表,并指定嵌入方式。 -
第五步,设置 OLE 对象在工作表中的位置和对象类型。
-
第六步,保存工作簿。
完整代码:
下面以嵌入一个 Word 文档为例:
from spire.xls import *
from spire.xls.common import *
# 创建 Workbook 对象
workbook = Workbook()
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 添加说明文字
sheet.Range["A1"].Text = "产品技术文档"
# 加载用于显示的文件图标
image = Image.FromFile("word_icon.png")
with Stream() as stream:
image.Save(stream, ImageFormat.get_Png())
# 将 Word 文件嵌入工作表
oleObject = sheet.OleObjects.Add(
"product_manual.docx",
stream,
OleLinkType.Embed
)
# 设置对象位置
oleObject.Location = sheet.Range["B3"]
# 设置对象类型
oleObject.ObjectType = OleObjectType.WordDocument
# 保存工作簿
workbook.SaveToFile("EmbedFile.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
如果要嵌入 PDF 或 PowerPoint 文件,只需要更换源文件路径,并将 ObjectType 设置为对应的类型,例如:
# 嵌入 PDF 文件
oleObject.ObjectType = OleObjectType.AdobeAcrobatDocument
# 嵌入 PowerPoint 文件
oleObject.ObjectType = OleObjectType.PowerPointPresentation
特点分析: 使用 OLE 对象可以将不同类型的文件集中保存在 Excel 工作簿中,避免单独管理大量附件。通过 Python 编写脚本,还可以根据文件路径和业务数据自动添加对象,适合批量生成包含技术文档、产品资料或其他附件的 Excel 报表。不过,OLE 对象的打开方式取决于本地是否安装了相应的关联程序,实际使用效果也可能受到 Office 版本和系统环境的影响。
三、在 Excel 中插入和嵌入文件时需要注意什么?
无论使用 Excel 自带功能还是 Python 库,插入图片和嵌入文件时都有一些细节需要留意。尤其是 OLE 对象,如果没有区分清楚嵌入和链接两种方式,可能会影响后续文件的访问和管理。
1. 嵌入文件和链接文件有什么区别?
虽然嵌入和链接都可以在 Excel 工作表中添加外部文件,但两者保存文件的方式并不相同。
- 嵌入文件: 将源文件的数据保存在 Excel 工作簿中。即使原始文件被移动或删除,工作簿中通常仍保留嵌入的文件内容,但工作簿体积也会随之增加。
- 链接文件: 工作簿只保存指向外部文件的引用,不会完整复制源文件数据。因此,工作簿体积相对较小,但需要确保源文件路径有效,否则可能无法正常访问。
如果希望将 Excel 和相关附件一起发送给其他人,且不想额外传输源文件,嵌入方式通常更合适。如果文件比较大,或者源文件需要独立更新,则可以考虑使用链接方式。
2. 嵌入文件后为什么无法正常打开?
在 Excel 中添加 OLE 对象,并不意味着所有文件都能直接在工作表中预览或播放。OLE 对象通常需要调用本地安装的关联程序打开,因此可能受到以下因素影响:
- 缺少关联程序: 如果电脑没有安装能够打开对应文件的应用程序,双击对象时可能无法正常打开。
- 文件类型不匹配: 设置的 OLE 对象类型应与实际嵌入的文件相匹配,否则可能影响文件的识别和打开。
- 文件路径失效: 如果使用链接方式,移动或删除源文件可能导致链接失效。
- 兼容性问题: 不同版本的 Excel、操作系统和应用程序对 OLE 对象的支持可能存在差异。
因此,生成工作簿后,最好使用目标环境中的 Excel 打开文件,并实际双击对象进行验证。
3. 如何控制 Excel 文件的大小?
如果工作簿中包含大量高清图片或较大的附件,文件体积可能会迅速增加,影响保存、传输和打开速度。
可以考虑以下几种处理方式:
- 插入图片前适当压缩图片,避免使用不必要的高分辨率图片。
- 对于体积较大的外部文件,优先考虑使用链接方式,而不是全部嵌入工作簿。
- 如果只是希望让用户查看外部资料,也可以在单元格中添加超链接,直接指向文件所在位置。
根据实际需求选择合适的方式,可以在保留必要信息的同时,避免工作簿变得过于庞大。
总结
在 Excel 中添加图片和其他文件,可以直接使用软件自带的插入功能,也可以借助 Python 实现自动化处理。如果只是偶尔添加图片或附件,通过 Excel 的插入菜单就能快速完成;如果需要批量处理图片,可以使用 Spire.XLS for Python 的 Pictures.Add() 方法,将图片添加到指定的工作表位置;而对于 Word、PDF、PowerPoint 等外部文件,则可以使用 OleObjects.Add() 方法将其作为 OLE 对象嵌入工作簿,或者通过链接方式引用外部文件。相比手动操作,使用 Python 更适合批量生成包含图片和附件的 Excel 报表,能够减少重复操作,让文件处理更加高效。

浙公网安备 33010602011771号