如何将外部工作簿中的图片插入现有工作簿的指定工作表?
解决Excel工作簿间图片迁移与工作表合并问题
针对你的需求,推荐使用openpyxl完成操作,下面是具体解决步骤:
1. 修复openpyxl读取图片的报错问题
你遇到的IOError: cannot identify image file,是因为直接读取工作表图片对象时没有正确解析二进制数据。可以通过提取图片的数据流来解决:
from openpyxl import load_workbook from openpyxl.drawing.image import Image from io import BytesIO # 读取file2.xlsx并提取Sheet1中的图片 wb_source = load_workbook('file2.xlsx') ws_source = wb_source['Sheet1'] # 提取嵌入式图片(这里取第一张,多图片可循环处理) target_img = None for img in ws_source._images: # 将图片转为字节流 img_stream = BytesIO(img.image) target_img = Image(img_stream) break wb_source.close()
2. 将图片插入到file1.xlsx的Sheet3中
读取目标工作簿,将图片插入到指定位置:
# 读取file1.xlsx的Sheet3 wb_target = load_workbook('file1.xlsx') ws_target = wb_target['Sheet3'] # 插入图片到数据旁(示例位置为D1,可根据你的数据范围调整) ws_target.add_image(target_img, 'D1') # 保存修改后的工作簿(建议另存为新文件,避免覆盖原文件) wb_target.save('file1_merged.xlsx') wb_target.close()
补充说明
- 关于
xlsxwriter:该库仅支持创建新工作簿,无法修改现有文件,因此确实不适合你的场景。 - 如果仍有图片识别问题:可以先手动将file2.xlsx Sheet1中的图片导出为本地PNG/JPG文件,再通过
Image('本地图片路径')直接读取插入。
内容的提问来源于stack exchange,提问作者Anna Yerkanyan
相关产品推荐
相关产品推荐

