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

如何使用Python/Pandas在Excel(xlsx)中显示Base64图片

在Excel单元格中显示Base64图片的解决方案

你现在看到的<PIL.PngImagePlugin.PngImageFile...>是PIL图片对象的字符串化输出,Excel无法直接识别并渲染这个对象。要实现单元格内显示图片的效果,需要将Base64编码的图片解码后嵌入到Excel对应位置,以下是两种常用实现方式:

方法一:使用openpyxl库(适配已有Excel文件修改)

  1. 将Base64编码字符串解码为二进制图片数据
  2. 用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:25:10