You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在Excel指定单元格内插入图片?

在Excel单元格内插入图片的实现方案(基于openpyxl)

openpyxl本身不支持直接将图片“嵌入”单元格内部——它只能将图片作为浮动对象添加到工作表中,即使设置了锚点,图片也只是覆盖在单元格上方,不会和单元格真正绑定。不过可以通过以下方法模拟“图片在单元格内”的效果,让图片随单元格移动、调整大小:

核心思路

  1. 调整目标单元格的宽高(可选,根据图片尺寸适配)
  2. 将图片大小调整为匹配单元格的尺寸
  3. 设置图片锚定到目标单元格,并配置其随单元格移动、调整大小的属性

示例代码

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

# 初始化工作簿和工作表
wb = Workbook()
ws = wb.active

# 1. 配置目标单元格的大小(按需调整)
target_cell = "A1"
ws.column_dimensions[target_cell[0]].width = 18  # 设置列宽(字符数)
ws.row_dimensions[int(target_cell[1:])].height = 90  # 设置行高(磅)

# 2. 加载图片并调整尺寸匹配单元格
img = Image("your_image.png")

# 转换Excel单位到像素(近似值,适配默认字体)
cell_width = ws.column_dimensions[target_cell[0]].width * 7.25
cell_height = ws.row_dimensions[int(target_cell[1:])].height * 1.333

# 调整图片大小(如需保持比例,可只调整宽/高中一个,另一个按比例计算)
img.width = cell_width
img.height = cell_height

# 3. 绑定图片到单元格,设置随单元格移动和调整
img.anchor = target_cell
# 设置图片锚定规则为跟随单个单元格
img.drawing.anchor.editAs = "oneCell"

ws.add_image(img)

# 保存文件
wb.save("image_in_cell.xlsx")

说明

  • 这种方法本质上还是将图片作为浮动对象处理,但通过配置editAs = "oneCell",可以让图片和单元格绑定:调整单元格大小时图片会同步缩放,移动单元格时图片也会跟着移动。
  • 单位转换的数值是近似值,如果使用非默认字体,可能需要微调转换系数来适配。

内容的提问来源于stack exchange,提问作者Omar Keshk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:35:05