Python xlsxwriter如何调整图片插入点 实现图片向上扩展底部固定
xlsxwriter插入图片坐标调整及底部固定实现

坐标参数规则
- xlsxwriter的
insert_image(row, col, image_path, options)方法的行、列坐标均从0开始计数,仅支持非负整数,因此(1,0)是合法参数(表示将图片左上角锚定在第2行、第1列的单元格位置),但(1,-1)为非法参数,无法直接使用。
底部固定向上扩展的实现方案
要实现图片底部位置固定、高度增加时向上延伸的需求,可通过动态计算左上角锚点坐标的方式实现,操作步骤如下:
- 借助Pillow库获取动态生成图片的原始像素高度,结合你设置的
y_scale缩放比例计算最终显示高度 - 提前确定需要固定的图片底部对应的行号,结合单行行高(默认行高约为15像素,若自定义了行高可通过
worksheet.row_height(row)获取对应行的高度),倒推图片左上角的行坐标 - 插入图片时可配合
object_position参数设置锚定规则,避免单元格调整时图片位置偏移
代码示例
from PIL import Image import os from django.conf import settings # 读取图片并计算缩放后的实际高度 img_path = str(os.path.join(settings.BASE_DIR,'c_acwc_total_df.png')) with Image.open(img_path) as img: original_height = img.height scaled_height = original_height * 0.7 # 计算左上角插入行:假设需要固定图片底部在第50行,默认行高为15像素 default_row_height = 15 img_occupy_rows = scaled_height / default_row_height insert_row = 50 - img_occupy_rows insert_col = 26 # 插入图片,object_position=3表示大小和位置不随单元格变动 worksheet1.insert_image( insert_row, insert_col, img_path, { 'x_scale': 0.7, 'y_scale': 0.7, 'object_position': 3 } )
参数说明
object_position可选值及对应效果:
- 1:图片大小和位置随单元格调整而变动
- 2:图片大小固定,位置随单元格调整而变动
- 3:图片大小和位置均固定,不受单元格调整影响
内容的提问来源于stack exchange,提问作者Prinjal Boruah
相关产品推荐
相关产品推荐

