8人参与 • 2026-01-31 • Python
在自动化报表生成、数据可视化或办公流程优化中,经常需要在 excel 文件中嵌入图表、公司 logo、产品图片等图像元素。同时,在某些场景下(如模板清理或隐私 处理),也可能需要移除已存在的图片。借助 python 的强大生态,我们可以高效地实现这些操作。
本文将详细介绍如何使用 openpyxl(适用于 .xlsx 格式)和 xlwings(支持与 excel 应用交互)两种主流库,在 excel 中添加图片和删除图片,并提供可直接运行的示例代码。
安装依赖库
# openpyxl:纯 python 操作 excel,无需安装 excel 软件 pip install openpyxl pillow # xlwings:需本地安装 microsoft excel(windows/macos) pip install xlwings
注意:pillow 是 openpyxl 处理图片所必需的图像库。
openpyxl 支持在指定单元格位置插入图片,并可设置偏移、锚定方式等。
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 通过调用本地 excel 应用程序,能读取、修改甚至删除工作表中的所有对象,包括图片。
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("图片已插入!")
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("所有图片已删除!")
# 假设图片名为 "logo"
if "logo" in [p.name for p in ws.pictures]:
ws.pictures["logo"].delete()
优点:
缺点:
| 功能 | openpyxl | xlwings |
|---|---|---|
| 插入图片 | ✅ | ✅ |
| 删除图片 | ❌ | ✅ |
| 无需 excel 软件 | ✅ | ❌ |
| 支持 linux | ✅ | ❌ |
| 性能(大批量) | 高 | 中(依赖 excel 进程) |
| 精细控制(偏移/缩放) | 有限 | 强大 |
openpyxl,轻量且跨平台。xlwings,功能全面。openpyxl;windows 服务器可考虑 xlwings(但需安装 excel)。xlwings 时务必用 try...finally 确保 app.quit() 被调用,防止进程泄漏。通过 python 操作 excel 中的图片,不再是繁琐的手动任务。无论是自动嵌入分析图表,还是批量清理敏感图像,openpyxl 和 xlwings 都提供了强大而简洁的解决方案。根据你的运行环境和功能需求选择合适的工具,即可轻松实现 excel 图像的自动化管理,大幅提升办公效率与系统智能化水平。
到此这篇关于python实现在excel中动态插入与删除图片的完整指南的文章就介绍到这了,更多相关python excel插入与删除图片内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论