如何使用 Python 操作 Excel 图片:插入、提取与压缩

在自动化报表和数据可视化的工作中,Excel 文件不仅仅是数字和公式的集合。为了让报表更直观、更易于理解,嵌入图片已成为常见且必要的做法。例如,公司标志可以强化品牌识别,产品缩略图可以让库存表更直观,签名印章则能确保财务报表或合同文档的正式性。然而,当涉及数百份工作表或定期生成的报表时,手动调整图片的尺寸和位置不仅耗时,还容易出错,效率极低。

通过 Python,我们可以实现对 Excel 中图片的自动化管理。这不仅能节省大量人工操作时间,还能确保图片布局一致、美观,同时支持批量处理、图片压缩和格式优化。使用 Python 可以轻松完成以下任务:

  • 将图片插入到指定单元格,并精确控制其位置和尺寸

  • 从 Excel 文件中提取图片,批量保存到本地

  • 删除不需要的图片,清理工作表

  • 批量压缩图片以优化文件大小

  • 动态调整图片尺寸或位置,以适应不同布局需求

本文将基于 Python 展示这些操作的完整流程,并提供详细的示例代码,让你可以快速在实际项目中应用。

环境准备

在开始操作之前,需要确保已经安装了 Spire.XLS for Python。这个库允许对 Excel 文档进行深度操作,无需在本地安装 Microsoft Office,适合自动化脚本、服务器环境以及无头操作场景。

安装方法如下:

复制代码
pip install Spire.XLS

安装完成后,即可开始对 Excel 文件进行图片管理操作。

在 Excel 中插入图片

在实际工作中,经常需要在 Excel 表格中插入静态图片,例如企业 Logo、二维码或者产品图片。手动操作既费时又容易错位,而使用 Python 可以实现精准定位和自动调整尺寸。

下面示例演示了如何在指定单元格插入图片,并通过列和行的偏移量微调其位置,同时调整行高和列宽以适应图片。

python 复制代码
from spire.xls import * 
from spire.xls.common import *

# 创建 Workbook 对象
workbook = Workbook()

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 在第1行、第3列添加图片
imgPath = "C:\\Users\\Administrator\\Desktop\\logo.png"
picture = sheet.Pictures.Add(1, 3, imgPath)

# 设置图片宽度和高度
picture.Width = 150
picture.Height = 150

# 调整列宽和行高以适应图片
sheet.Columns[2].ColumnWidth = 25
sheet.Rows[0].RowHeight = 135

# 设置图片与单元格边框的距离
picture.LeftColumnOffset = 90
picture.TopRowOffset = 20

# 保存到文件
workbook.SaveToFile("output/InsertImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

提示 :可以通过调整 LeftColumnOffsetTopRowOffset 的数值,精确控制图片在单元格内的偏移位置。

从 Excel 中提取图片

在数据整理或资产管理中,你可能会收到带有大量嵌入图片的 Excel 文件,需要将这些图片保存到本地进行分析或归档。手动操作不仅耗时,而且容易遗漏。Python 可以批量提取图片,并按照编号自动保存。

python 复制代码
from spire.xls import *
from spire.xls.common import *

# 创建 Workbook 实例
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("Test.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 遍历工作表中的所有图片,并保存为 PNG 文件
for i in range(sheet.Pictures.Count - 1, -1, -1):
    pic = sheet.Pictures[i]
    pic.Picture.Save(f"ExtractImages\\Image-{i:d}.png", ImageFormat.get_Png())

workbook.Dispose()

实用技巧 :反向遍历 Pictures 集合可以避免在删除或处理图片时出现索引错误。

删除图片

在自动化处理流程中,可能需要先清理工作表中已有的图片,再插入新的图片。例如:生成月度报告时,先删除上月的图标和签名图片,再批量添加新图片。

python 复制代码
from spire.xls import *
from spire.xls.common import *

# 创建 Workbook 对象
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\InsertImage.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 删除所有图片
for i in range(sheet.Pictures.Count - 1, -1, -1):
    sheet.Pictures[i].Remove()

# 保存到文件
workbook.SaveToFile("output/DeleteImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

高级图片操作

除了插入、提取和删除,Spire.XLS 还支持对图片进行压缩、调整大小、移动位置等高级操作,让你的 Excel 文件更美观,同时减少文件体积。

图片压缩

高分辨率图片会显著增加 Excel 文件大小,影响分享和存储。Python 可以自动压缩图片,降低文件体积,同时保证图片质量在可接受范围内。

python 复制代码
from spire.xls import * 
from spire.xls.common import *

# 创建 Workbook 对象
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("C:/Users/Administrator/Desktop/Images.xlsx")

# 遍历工作表中的所有图片
for sheet in workbook.Worksheets:
    for picture in sheet.Pictures:
        # 压缩图片,质量等级 50
        picture.Compress(50)

# 保存文件
workbook.SaveToFile("output/CompressImages.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

调整图片大小

有时需要将图片统一缩放,例如将所有产品图片缩小到原始尺寸的 50%,以适应报表布局。

python 复制代码
from spire.xls import *
from spire.xls.common import *

# 创建 Workbook 对象
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("C:/Users/Administrator/Desktop/Image.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 获取工作表中的第一张图片
picture = sheet.Pictures[0]

# 缩小图片尺寸
picture.Width = int(picture.Width / 2)
picture.Height = int(picture.Height / 2)

# 保存文件
workbook.SaveToFile("output/ResizeImage.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

移动图片位置

通过调整 TopRowLeftColumn 属性,可以在不改变图片大小的情况下重新定位图片,灵活调整表格布局。

python 复制代码
from spire.xls import *
from spire.xls.common import *

# 创建 Workbook 对象
workbook = Workbook()

# 加载 Excel 文件
workbook.LoadFromFile("C:/Users/Administrator/Desktop/Image.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 获取工作表中的第一张图片
picture = sheet.Pictures[0]

# 移动图片位置
picture.TopRow = 5
picture.LeftColumn = 6

# 保存文件
workbook.SaveToFile("output/MoveImage.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

总结

在 Excel 中自动化图片处理不仅能大幅提升效率,还能确保报表美观、布局统一,特别适合批量生成报表、制作产品目录或整理财务表格。使用 Python 处理 Excel 图片,你可以轻松完成插入、提取、删除、压缩、缩放和移动等操作,实现可重复、可靠的自动化流程。

关键要点:

  • 使用 Pictures.Add() 精准插入图片

  • 使用 Pictures.Remove() 批量删除图片

  • 使用 picture.Compress() 优化文件大小

  • 操作完成后务必调用 workbook.Dispose() 释放系统资源

额外建议:在处理大量图片时,可以结合 Python 的循环和条件判断,实现更加智能化的报表生成流程。例如,根据图片大小自动压缩或根据表格位置自动调整图片偏移量。

相关推荐
庄小法2 小时前
pytest
开发语言·python·pytest
sonnet-10292 小时前
堆排序算法
java·c语言·开发语言·数据结构·python·算法·排序算法
熊猫_豆豆2 小时前
Python月球、地球、太阳三天体联动一个月的月相图
python·农历·月亮
骆驼爱记录2 小时前
Word一键批量添加图章
自动化·word·excel·wps·新人首发
小陈工2 小时前
Python开源代码管理避坑实战:从Git高级操作到Docker环境配置
开发语言·git·python·安全·docker·开源·源代码管理
小陈工2 小时前
2026年3月27日技术资讯洞察:量子计算密码突破、硬件安全新范式与三月网络安全警报
服务器·python·安全·web安全·单元测试·集成测试·量子计算
倾一生爱恋换一世纯真2 小时前
使用python代码生成ragas的测试文档testset.json
人工智能·python·ragas·rag测试
繁星星繁2 小时前
Python基础语法(一)
c++·笔记·python
未来转换2 小时前
Python 框架 Django 从入门到精通
数据库·python·django