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

如何修改工作表中已有图片尺寸 将图片宽度设置为自身高度

问题原因

你的原有代码不生效主要存在以下问题:

  • 使用了_images私有属性,该属性属于openpyxl内部非公开实现,不同版本逻辑差异较大,部分版本修改该属性下的宽高不会同步到文件写入逻辑
  • 代码片段缺少工作簿保存逻辑,所有修改仅保留在内存中,不会写入实际文件
  • 若加载工作簿时启用了read_only=True参数,所有修改操作都不会生效
正确实现代码

以下是批量处理目录下所有xlsx表格的完整代码:

import os
from openpyxl import load_workbook

# 替换为你的表格所在文件夹路径
target_folder = "./excel_files"

for filename in os.listdir(target_folder):
    # 仅处理xlsx格式文件,xls格式需先转换为xlsx再操作
    if not filename.lower().endswith(".xlsx"):
        continue
    file_path = os.path.join(target_folder, filename)
    # 加载工作簿时禁止开启只读模式
    wb = load_workbook(file_path)
    
    # 遍历所有工作表,仅处理第一个工作表可改为 for ws in [wb.worksheets[0]]:
    for ws in wb.worksheets:
        for drawing in ws.drawings:
            # 筛选可设置宽高的图片对象
            if hasattr(drawing, "width") and hasattr(drawing, "height"):
                # 直接将宽度赋值为当前高度,单位自动匹配无需额外转换
                drawing.width = drawing.height
    
    # 必须执行保存操作,可修改保存路径避免覆盖原文件
    wb.save(file_path)
注意事项
  • 处理前建议备份原表格,避免修改出错丢失数据
  • 若需要按像素指定尺寸,可按1像素 = 9525 EMU的比例转换,例:设置高度为100像素可赋值drawing.height = 100 * 9525
  • 加密的表格需要先解密后再执行处理操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:01