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

使用pandas.to_excel()后用xlsxwriter向Excel插入图片失败的问题

问题解答

你的猜测不对,to_excel()执行后工作表完全可以继续修改,操作失败大概率是代码逻辑有误,而非工作表被锁定。

正确的操作流程

你不需要手动逐单元格写入DataFrame,用to_excel()写入后依然可以插入图片,关键是要正确获取xlsxwriter原生的工作表对象,并在最后保存文件。以下是完整示例:

import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    '名称': ['商品A', '商品B', '商品C'],
    '销量': [120, 80, 150]
})

# 初始化ExcelWriter,指定xlsxwriter引擎
writer = pd.ExcelWriter('带图片的报表.xlsx', engine='xlsxwriter')

# 将DataFrame写入工作表
df.to_excel(writer, sheet_name='销售数据', index=False)

# 获取xlsxwriter的工作表对象
# 两种方式都可以:直接从writer.sheets取,或者通过writer.book获取
worksheet = writer.sheets['销售数据']
# 或者 worksheet = writer.book.get_worksheet_by_name('销售数据')

# 在指定单元格插入图片(参数:单元格位置,图片路径)
worksheet.insert_image('D2', '产品宣传图.png')

# 必须调用save()才能将所有修改写入文件
writer.save()

常见失败原因

  1. 获取了错误的工作表对象:如果你误拿了pandas封装的对象而非xlsxwriter原生工作表,调用insert_image()会报错。一定要通过writer.sheets[sheet_name]或writer.book.get_worksheet_by_name()获取正确对象。
  2. 忘记调用writer.save():所有对工作表的修改(包括插入图片)都需要通过save()方法最终写入文件,否则不会生效。
  3. 图片路径错误:确保insert_image()的第二个参数是正确的图片绝对路径或相对路径,找不到图片也会导致操作失败。

简单说,to_excel()只是把DataFrame的数据写入工作表,并没有“完成写入锁定”,只要在save()之前,都可以对工作表做任何xlsxwriter支持的操作。

内容的提问来源于stack exchange,提问作者cjbarth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:51:04