如何使用Python/Pandas在Excel(xlsx)中显示Base64图片
在Excel单元格中显示Base64图片的解决方案
你现在看到的<PIL.PngImagePlugin.PngImageFile...>是PIL图片对象的字符串化输出,Excel无法直接识别并渲染这个对象。要实现单元格内显示图片的效果,需要将Base64编码的图片解码后嵌入到Excel对应位置,以下是两种常用实现方式:
方法一:使用openpyxl库(适配已有Excel文件修改)
- 将Base64编码字符串解码为二进制图片数据
- 用openpyxl把图片插入指定单元格,调整大小匹配单元格
import base64 from io import BytesIO from PIL import Image from openpyxl import load_workbook from openpyxl.drawing.image import Image as XLImage # 加载目标Excel文件 wb = load_workbook("your_file.xlsx") ws = wb.active # 假设Base64图片数据存于A列,从第2行开始遍历 for row in range(2, ws.max_row + 1): base64_str = ws[f"A{row}"].value if not base64_str: continue # 解码Base64为二进制图片流 img_data = base64.b64decode(base64_str) # 创建Excel兼容的图片对象 xl_img = XLImage(BytesIO(img_data)) # 绑定图片到目标单元格,调整尺寸适配(示例为100x150) xl_img.anchor = f"A{row}" xl_img.width = 100 xl_img.height = 150 # 将图片添加到工作表 ws.add_image(xl_img) # 保存修改后的文件 wb.save("your_file_with_images.xlsx")
方法二:使用xlsxwriter库(适配从Pandas生成Excel)
如果是从Pandas DataFrame导出带图片的Excel,用xlsxwriter配合会更高效:
import base64 from io import BytesIO import pandas as pd import xlsxwriter # 读取包含Base64图片列的DataFrame(假设列名为"image_base64") df = pd.read_csv("your_data_source.csv") # 创建Excel写入器 writer = pd.ExcelWriter("output.xlsx", engine="xlsxwriter") df.to_excel(writer, sheet_name="Sheet1", index=False) workbook = writer.book worksheet = writer.sheets["Sheet1"] # 预先设置单元格宽高适配图片 worksheet.set_column("A:A", 20) # 调整图片列宽度 for row in range(2, len(df) + 2): worksheet.set_row(row - 1, 120) # 调整行高度 # 遍历每行插入图片 for idx, row in df.iterrows(): base64_str = row["image_base64"] # 若Base64带前缀(如data:image/png;base64,),先执行base64_str = base64_str.split(",")[-1] img_data = base64.b64decode(base64_str) # 插入图片到对应单元格(行索引从0开始,对应Excel第idx+2行) worksheet.insert_image( idx + 1, 0, "temp_img", {"image_data": BytesIO(img_data), "x_scale": 0.5, "y_scale": 0.5} ) writer.close()
注意事项
- 先安装依赖库:
pip install openpyxl xlsxwriter pillow pandas - 若Base64字符串带有
data:image/png;base64,这类前缀,需先截取逗号后的内容再解码 - 可根据实际单元格大小调整图片的
width/height或x_scale/y_scale参数
内容的提问来源于stack exchange,提问作者Herojos
相关产品推荐
相关产品推荐

