Python实现在Excel中动态插入与删除图片的完整指南

 更新时间:2026年01月30日 08:53:11   作者:大黄评测  
在自动化报表生成、数据可视化或办公流程优化中,经常需要在 Excel 文件中嵌入图表,本文将详细介绍如何使用主流库在 Excel 中添加图片和删除图片,有需要的小伙伴可以了解下

在自动化报表生成、数据可视化或办公流程优化中,经常需要在 Excel 文件中嵌入图表、公司 Logo、产品图片等图像元素。同时,在某些场景下(如模板清理或隐私 处理),也可能需要移除已存在的图片。借助 Python 的强大生态,我们可以高效地实现这些操作。

本文将详细介绍如何使用 openpyxl(适用于 .xlsx 格式)和 xlwings(支持与 Excel 应用交互)两种主流库,在 Excel 中添加图片删除图片,并提供可直接运行的示例代码。

一、准备工作

安装依赖库

# openpyxl:纯 Python 操作 Excel,无需安装 Excel 软件
pip install openpyxl pillow

# xlwings:需本地安装 Microsoft Excel(Windows/macOS)
pip install xlwings

注意:pillowopenpyxl 处理图片所必需的图像库。

二、方法一:使用 openpyxl 插入图片(推荐用于无交互场景)

openpyxl 支持在指定单元格位置插入图片,并可设置偏移、锚定方式等。

示例:向 Excel 插入图片

from openpyxl import Workbook
from openpyxl.drawing.image import Image

# 创建新工作簿或加载现有文件
wb = Workbook()
ws = wb.active

# 加载图片(支持 PNG、JPG、BMP 等)
img = Image("logo.png")

# 可选:调整图片尺寸(单位为像素)
img.width = 150
img.height = 100

# 将图片锚定到 A1 单元格(左上角对齐)
ws.add_image(img, "A1")

# 保存文件
wb.save("with_image.xlsx")
print("图片已成功插入 Excel!")

高级用法:精确控制位置

若需更精细控制(如偏移量),可使用 AnchorMarker

from openpyxl.drawing.spreadsheet_drawing import OneCellAnchor, AnchorMarker
from openpyxl.utils.units import pixels_to_EMU

# 创建锚点:从 B2 单元格开始,右偏移 10 像素,下偏移 5 像素
col = 1  # B 列(从 0 开始计数)
row = 1  # 第 2 行(从 0 开始)
x_offset = pixels_to_EMU(10)
y_offset = pixels_to_EMU(5)

marker = AnchorMarker(col=col, colOff=x_offset, row=row, rowOff=y_offset)
anchor = OneCellAnchor(_from=marker, ext=img._size)
ws._images.append(img)
ws.drawing.anchor.append(anchor)

注意:openpyxl 不支持删除已有图片。它只能在新建或加载的工作表中添加新图片,无法识别或移除原始文件中的图像。

三、方法二:使用 xlwings 插入与删除图片(支持完整 CRUD)

xlwings 通过调用本地 Excel 应用程序,能读取、修改甚至删除工作表中的所有对象,包括图片。

示例 1:插入图片

import xlwings as xw

app = xw.App(visible=False)  # 后台运行 Excel
wb = app.books.open("report.xlsx")
ws = wb.sheets["Sheet1"]

# 在 A1 单元格左上角插入图片
ws.pictures.add("chart.jpg", left=ws.range("A1").left, top=ws.range("A1").top)

wb.save("report_with_image.xlsx")
wb.close()
app.quit()
print("图片已插入!")

示例 2:删除所有图片

import xlwings as xw

app = xw.App(visible=False)
wb = app.books.open("report_with_image.xlsx")
ws = wb.sheets["Sheet1"]

# 删除当前工作表中的所有图片
for pic in ws.pictures:
    pic.delete()

wb.save("cleaned_report.xlsx")
wb.close()
app.quit()
print("所有图片已删除!")

示例 3:按名称删除特定图片

# 假设图片名为 "Logo"
if "Logo" in [p.name for p in ws.pictures]:
    ws.pictures["Logo"].delete()

优点:

  • 支持插入、删除、移动、重命名图片。
  • 可获取图片位置、大小等属性。
  • 兼容 Excel 原生格式(包括 .xls 和 .xlsx)。

缺点:

  • 必须安装 Microsoft Excel。
  • 仅支持 Windows 和 macOS,不适用于 Linux 服务器环境。
  • 进程管理需谨慎(避免 Excel 进程残留)。

四、对比总结

功能openpyxlxlwings
插入图片
删除图片
无需 Excel 软件
支持 Linux
性能(大批量)中(依赖 Excel 进程)
精细控制(偏移/缩放)有限强大

五、最佳实践建议

  • 生成新报表:优先使用 openpyxl,轻量且跨平台。
  • 编辑现有文件(含删图) :使用 xlwings,功能全面。
  • 生产环境部署:若在 Linux 服务器运行,只能选择 openpyxl;Windows 服务器可考虑 xlwings(但需安装 Excel)。
  • 异常处理:使用 xlwings 时务必用 try...finally 确保 app.quit() 被调用,防止进程泄漏。

结语

通过 Python 操作 Excel 中的图片,不再是繁琐的手动任务。无论是自动嵌入分析图表,还是批量清理敏感图像,openpyxlxlwings 都提供了强大而简洁的解决方案。根据你的运行环境和功能需求选择合适的工具,即可轻松实现 Excel 图像的自动化管理,大幅提升办公效率与系统智能化水平。

到此这篇关于Python实现在Excel中动态插入与删除图片的完整指南的文章就介绍到这了,更多相关Python Excel插入与删除图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 学习python (2)

    学习python (2)

    学习python (2)...
    2006-10-10
  • python搜索包的路径的实现方法

    python搜索包的路径的实现方法

    今天小编就为大家分享一篇python搜索包的路径的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 利用Tkinter(python3.6)实现一个简单计算器

    利用Tkinter(python3.6)实现一个简单计算器

    这篇文章主要给大家介绍了关于利用Tkinter(python3.6)实现一个简单计算器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • 一文详解NumPy简单算术及其他运算的实现

    一文详解NumPy简单算术及其他运算的实现

    你可以直接在 NumPy 数组之间使用算术运算符 + - * /,但本节讨论了一个扩展,其中我们有函数可以接受任何类似数组的对象,如列表、元组等,并根据条件执行算术运算,文中通过代码示例给大家讲解的非常详细,需要的朋友可以参考下
    2024-06-06
  • Django 路由控制的实现代码

    Django 路由控制的实现代码

    这篇文章主要介绍了Django 路由控制的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python requests爬取高德地图数据的实例

    python requests爬取高德地图数据的实例

    今天小编就为大家分享一篇python requests爬取高德地图数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Pycharm制作搞怪弹窗的实现代码

    Pycharm制作搞怪弹窗的实现代码

    这篇文章主要介绍了Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python导入Excel表格数据并以字典dict格式保存的操作方法

    Python导入Excel表格数据并以字典dict格式保存的操作方法

    本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法,感兴趣的朋友一起看看吧
    2023-01-01
  • 如何解决Python读取图片路径存在转义字符的问题

    如何解决Python读取图片路径存在转义字符的问题

    这篇文章主要为大家详细介绍了如何解决Python读取图片路径时存在转义字符的问题,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2023-07-07
  • python中partial库的使用方法解析

    python中partial库的使用方法解析

    这篇文章主要介绍了python中partial库的使用方法解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-08-08

最新评论