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

Python实现Excel数据导入PPT表格报错求助(KeyError:0)

问题解决:KeyError: 0 错误修复

错误原因

你在循环中用df[row][col]访问DataFrame数据的方式完全错误:

  • df[row]是按列名查找列,但你的列名是Unnamed: 0、Unnamed: 1这类字符串,不是数字0,所以触发KeyError
  • 即便列名是数字,这种嵌套索引的方式也不符合Pandas的正确用法,按位置访问数据必须用iloc

修复后的代码

import pandas as pd
import pptx
from pptx.util import Cm
from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
from pptx.dml.color import RGBColor

# 删除没用的openpyxl代码,pandas读excel足够
df = pd.read_excel('XXX.xlsx', sheet_name=0, usecols='A:P')
df = df.iloc[1:15]  # 取原表第2到第15行(共14行)
df['Unnamed: 3'] = round(df['Unnamed: 3'].astype('float'), 0)
df['Unnamed: 5'] = df['Unnamed: 5'].apply(lambda x: format(x, '.2%'))

ppt = pptx.Presentation('demo.pptx')
layout = ppt.slide_layouts[12]
slide = ppt.slides.add_slide(layout)

rows = 14
cols = 16

left = top = Cm(2)
width = Cm(6.0)
height = Cm(1.0)

table = slide.shapes.add_table(rows, cols, left, top, width, height).table

# 用iloc按位置访问DataFrame数据
for row in range(rows):
    for col in range(cols):
        cell_value = df.iloc[row, col]
        table.cell(row, col).text = str(cell_value)

# 保存为pptx格式,和库输出格式一致
ppt.save("test2.pptx")

额外优化提示

  1. 移除了冗余的openpyxl加载代码,pandas已能完成Excel读取工作
  2. 保存文件改用.pptx后缀,python-pptx原生生成该格式,避免兼容性问题
  3. 若需要保留原表表头,可将df = df.iloc[1:15]改为df = df.iloc[0:15],同时把rows设为15,循环时第一行自动填充表头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:30:46