如何使用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
相关产品推荐
相关产品推荐

