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

如何使用Python将Excel中的图片保存至文件夹?附转换后代码

Python提取Excel中的图片并保存到文件夹

完全可行,你的代码存在几处需要修正的问题,比如load_workbook未正确导入、直接将Image对象转为bytearray的方式错误,还有Java风格的Mainclass在Python中没必要保留。下面是修正后的实现方案:

步骤说明

  • 先安装依赖:执行pip install openpyxl
  • 遍历工作表内的图片,通过Image对象的_data属性获取图片字节数据
  • 根据图片锚点位置关联上方两行的表头文本作为文件名
  • 将图片字节写入指定文件夹的文件中

修正后的代码

import openpyxl
from pathlib import Path

# 创建保存图片的文件夹,不存在则自动创建
save_dir = Path("extracted_pics")
save_dir.mkdir(exist_ok=True)

# 加载目标Excel文件
wb = openpyxl.load_workbook("myfile.xlsx")
sheet = wb["sheet1"]

if sheet:
    # 遍历工作表中的所有图片
    for pic in sheet._images:
        header_name = ""
        # 获取图片的原始字节数据
        pic_bytes = pic._data
        
        # 根据锚点位置获取上方两行的表头文本(Excel行号从1开始)
        if pic.anchor.row - 2 >= 1:
            header_cell = sheet.cell(row=pic.anchor.row - 2, column=pic.anchor.col_idx)
            if header_cell.value:
                header_name = str(header_cell.value).strip()
                pic_name = f"{header_name}.png"
            else:
                # 表头为空时用锚点位置命名
                pic_name = f"pic_{pic.anchor.row}_{pic.anchor.col_idx}.png"
        else:
            # 锚点位置太靠上时用默认命名
            pic_name = f"pic_{pic.anchor.row}_{pic.anchor.col_idx}.png"
        
        # 将图片写入文件
        with open(save_dir / pic_name, "wb") as f:
            f.write(pic_bytes)
        print(f"已保存图片: {pic_name}")

关键修正点

  • 补全openpyxl.load_workbook的导入(原代码遗漏)
  • 改用pic._data获取图片字节,替代错误的bytearray(pic)
  • 适配Excel行号从1开始的特性,调整行号判断条件避免越界
  • 添加文件夹自动创建逻辑,确保保存路径有效
  • 移除Java风格的Mainclass,直接实现图片保存逻辑
  • 增加表头为空时的默认命名规则,避免程序报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:24:56