You need to enable JavaScript to run this app. 如何使用Python无需指定行列在Excel中动态定位多张图片
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python无需指定行列在Excel中动态定位多张图片

实现思路

  • xlsxwriter的insert_image()方法本身支持0索引的行号、列号作为位置参数,替代'A1'类字符串坐标,非常适合自动化计算
  • 你可以维护两个变量记录当前插入位置的行、列索引,插入每张图片后,结合图片占用的行列数+你预设的间距,自动更新下一张的插入坐标即可
  • 垂直排列只需要更新行坐标,横向排列更新列坐标,网格布局同时更新两个坐标即可

可直接复用的代码示例

动态适配图片尺寸版本(自动计算图片占用行数)

需要先安装pillow库读取图片尺寸:pip install pillow

import xlsxwriter
from PIL import Image

# 自定义配置
START_ROW = 1  # 起始行,0索引对应Excel第1行,1对应第2行
START_COL = 1  # 起始列,0索引对应A列,1对应B列
PADDING_ROWS = 2  # 两张图片之间的空行数量
EXCEL_PX_PER_ROW = 20  # 行高像素换算值,可根据自己设置的行高调整

# 初始化工作簿
workbook = xlsxwriter.Workbook('image_output.xlsx')
worksheet = workbook.add_worksheet()
# 待插入的图片路径列表
image_paths = ['python.png', 'chart1.png', 'photo.jpg']

current_row, current_col = START_ROW, START_COL

for img_path in image_paths:
    # 读取图片像素尺寸
    with Image.open(img_path) as img:
        _, height_px = img.size
    # 计算当前图片占用的行数,向上取整避免被截断
    occupy_rows = (height_px // EXCEL_PX_PER_ROW) + 1
    # 插入图片
    worksheet.insert_image(current_row, current_col, img_path)
    # 更新下一张的起始行
    current_row += occupy_rows + PADDING_ROWS

workbook.close()

固定尺寸简化版本

如果不需要适配不同尺寸的图片,可以固定每张图的占用行数/缩放比例,不需要额外依赖:

import xlsxwriter

workbook = xlsxwriter.Workbook('image_output.xlsx')
worksheet = workbook.add_worksheet()
image_paths = ['python.png', 'chart1.png', 'photo.jpg']

current_row, current_col = 1, 1
FIXED_OCCUPY_ROWS = 20  # 固定每张图占20行
PADDING_ROWS = 2

for img_path in image_paths:
    # 可通过x_scale和y_scale固定图片缩放比例
    worksheet.insert_image(current_row, current_col, img_path, {'x_scale': 0.6, 'y_scale': 0.6})
    current_row += FIXED_OCCUPY_ROWS + PADDING_ROWS

workbook.close()

补充说明

  • 插入图表的逻辑和图片完全一致,把insert_image()替换为insert_chart()即可,同样支持行号列号参数
  • 如果需要网格布局,只需要增加计数器,每放满N张图就换行重置列坐标即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 05:54:06