当前位置: 代码网 > it编程>前端脚本>Python > Python中Excel图片插入、提取与压缩操作的完整指南

Python中Excel图片插入、提取与压缩操作的完整指南

2026年03月29日 Python 我要评论
在自动化报表和数据可视化的工作中,excel 文件不仅仅是数字和公式的集合。为了让报表更直观、更易于理解,嵌入图片已成为常见且必要的做法。例如,公司标志可以强化品牌识别,产品缩略图可以让库存表更直观,

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

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

  • 将图片插入到指定单元格,并精确控制其位置和尺寸
  • 从 excel 文件中提取图片,批量保存到本地
  • 删除不需要的图片,清理工作表
  • 批量压缩图片以优化文件大小
  • 动态调整图片尺寸或位置,以适应不同布局需求

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

环境准备

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

安装方法如下:

pip install spire.xls

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

在 excel 中插入图片

在实际工作中,经常需要在 excel 表格中插入静态图片,例如企业 logo、二维码或者产品图片。手动操作既费时又容易错位,而使用 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()

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

从 excel 中提取图片

在数据整理或资产管理中,你可能会收到带有大量嵌入图片的 excel 文件,需要将这些图片保存到本地进行分析或归档。手动操作不仅耗时,而且容易遗漏。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​​ 集合可以避免在删除或处理图片时出现索引错误。

删除图片

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

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 可以自动压缩图片,降低文件体积,同时保证图片质量在可接受范围内。

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%,以适应报表布局。

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()

移动图片位置

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

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 的循环和条件判断,实现更加智能化的报表生成流程。例如,根据图片大小自动压缩或根据表格位置自动调整图片偏移量。

到此这篇关于python中excel图片插入、提取与压缩操作的完整指南的文章就介绍到这了,更多相关python excel图片操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com