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")
额外优化提示
- 移除了冗余的
openpyxl加载代码,pandas已能完成Excel读取工作 - 保存文件改用
.pptx后缀,python-pptx原生生成该格式,避免兼容性问题 - 若需要保留原表表头,可将
df = df.iloc[1:15]改为df = df.iloc[0:15],同时把rows设为15,循环时第一行自动填充表头
内容的提问来源于stack exchange,提问作者Winna
相关产品推荐
相关产品推荐

