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

如何通过Python调用Excel新功能“插入图片到单元格”

在Excel单元格内嵌图片的Python实现方案

你提到的Excel「单元格绑定图片」功能(图片随单元格大小调整、同步移动),可以通过以下两种主流工具实现:

1. 使用openpyxl(跨平台推荐)

openpyxl从3.0.10版本开始支持将图片嵌入单元格,替代此前的浮动图片模式。示例代码如下:

from openpyxl import Workbook
from openpyxl.drawing.image import Image
from openpyxl.drawing.spreadsheet_drawing import AnchorMarker, TwoCellAnchor

wb = Workbook()
ws = wb.active

# 加载目标图片
img = Image("your_image.png")

# 设置图片锚定到指定单元格(示例为A1)
# 通过锚点定义让图片完全适配单元格范围
anchor = TwoCellAnchor(
    from_=AnchorMarker(col=0, colOff=0, row=0, rowOff=0),  # 左上角绑定A1起始位置
    to=AnchorMarker(col=1, colOff=0, row=1, rowOff=0)      # 右下角绑定A1结束位置
)
img.anchor = anchor

# 将图片添加到工作表
ws.add_image(img)

wb.save("embedded_image.xlsx")

注意事项:

  • 需确保安装openpyxl 3.0.10及以上版本,执行pip install --upgrade openpyxl完成更新
  • col和row参数从0开始计数(col=0对应A列,row=0对应第1行),可按需修改目标单元格
  • 若要让图片随单元格自动缩放,需取消图片的宽高锁定(可通过img.image.lockAspectRatio = False实现)

2. 使用pywin32(Windows平台,原生Excel功能调用)

如果在Windows环境下,可直接调用Excel的COM对象,完全复刻手动插入内嵌图片的操作:

import win32com.client as win32

excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True  # 设为False可后台运行

wb = excel.Workbooks.Add()
ws = wb.ActiveSheet

# 选中目标单元格(示例为A1)
ws.Range("A1").Select()

# 插入图片并绑定到单元格
excel.ActiveSheet.Shapes.AddPicture(
    Filename="your_image.png",
    LinkToFile=False,
    SaveWithDocument=True,
    Left=excel.ActiveCell.Left,
    Top=excel.ActiveCell.Top,
    Width=excel.ActiveCell.Width,
    Height=excel.ActiveCell.Height
)

# 设置图片随单元格移动并自动调整大小
target_shape = ws.Shapes(ws.Shapes.Count)
target_shape.LockAspectRatio = False
target_shape.Placement = 1  # xlMoveAndSize 对应Excel内置的随单元格调整属性

wb.SaveAs("embedded_image_win.xlsx")
excel.Quit()

该方法完全利用Excel原生逻辑,与手动操作效果一致,支持所有Excel内置的图片嵌入特性。

关于XlsxWriter的局限性

XlsxWriter目前仅支持添加浮动图片,无法实现单元格绑定,因为其底层未实现Excel的单元格锚定格式。若需内嵌功能,建议切换至上述工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:32:17