openpyxl图片处理异常:原有图片丢失及添加图片报错咨询
问题解决办法
一、解决添加图片时的ImportError错误
虽然你已安装Pillow,但仍报错,大概率是环境或版本问题,按以下步骤排查:
- 确认Pillow安装在当前脚本使用的虚拟环境中:执行
pip install pillow(注意包名是小写的pillow),你报错路径指向D:\temp\test\lib\site-packages,说明脚本用的是虚拟环境,需在该环境内完成安装。 - 升级openpyxl到最新版本:旧版openpyxl对Pillow的检测逻辑存在缺陷,执行
pip install --upgrade openpyxl即可修复。 - 手动验证并导入PIL:在脚本开头添加
from PIL import Image,若该语句无报错,说明Pillow可用,此时openpyxl的图片模块应能正常检测到。如果仍有问题,可手动显式导入PILImage:from PIL import Image as PILImage # 后续执行你的原有代码 xlsx = openpyxl.load_workbook('PlanilhaComProjetoDoUsuario.xlsx') ws = xlsx['Identificação'] img = openpyxl.drawing.image.Image('reflorestasp.png') img.anchor('A1') ws.add_image(img)
二、解决打开保存后原有图片丢失的问题
openpyxl依赖Pillow处理图片的读取与保存,且旧版本或未正确加载资源会导致图片丢失:
- 确保已正确安装Pillow(完成第一个问题的修复后),这是openpyxl处理图片的必要前提。
- 使用最新版openpyxl加载工作簿:openpyxl需借助Pillow读取嵌入图片,新版本对图片的兼容性更好,示例代码:
from openpyxl import load_workbook # 加载工作簿(需确保Pillow已安装) wb = load_workbook('你的带图片工作表.xlsx') # 直接保存即可保留图片 wb.save('保存后的工作表.xlsx') - 注意:若图片是通过Excel特殊方式嵌入(如外部链接而非本地嵌入、旧格式图片),openpyxl可能无法完全支持,建议确认图片为标准嵌入格式。
内容的提问来源于stack exchange,提问作者Mauro Assis
相关产品推荐
相关产品推荐

