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

使用Openpyxl追加元组转列表数据至Excel时遇AttributeError求助

问题描述

从Excel提取数据后转成列表,使用Openpyxl追加数据时触发错误:AttributeError: 'tuple' object has no attribute 'append'。

数据提取代码:

df = pd.read_excel(r'C:/work/111.xlsx', '222', skiprows = 0, nrows=30,  usecols= 'A:C')

转列表的代码:

df_list = df.values
de_list = list(df_list)
df_list = np.array(df_list)
df_list = df_list.tolist()

print(df_list)

type_df_list=type(df_list)
print(type_df_list)

打印结果显示df_list为列表类型,但执行追加操作仍报错,追加代码:

op_wb = op.load_workbook(r'C:/work/111.xlsx').active
op_sht_333 = op_wb['333']

for i in df_list:
   op_sht_333.append(i)

op_wb.save('111.xlsx')

问题解决

错误原因

你加载工作簿的代码逻辑有误:op_wb = op.load_workbook(r'C:/work/111.xlsx').active 这行将活动工作表对象赋值给了op_wb,后续op_wb['333']取的不是名为333的工作表,而是当前工作表中名为333的单元格/单元格组,返回结果为tuple类型,因此调用append方法会触发错误。

修正步骤

  1. 正确加载工作簿与工作表
    先加载完整的工作簿对象,再从中获取目标工作表:

    op_wb = op.load_workbook(r'C:/work/111.xlsx')
    op_sht_333 = op_wb['333']
    
  2. 简化数据转换代码
    原转换代码冗余,直接用df.values.tolist()即可将DataFrame转为嵌套列表,无需额外numpy操作:

    df_list = df.values.tolist()
    
  3. 执行追加操作
    循环嵌套列表,逐行追加到目标工作表:

    for row in df_list:
        op_sht_333.append(row)
    op_wb.save(r'C:/work/111.xlsx')
    

完整修正后代码

import pandas as pd
import openpyxl as op

# 提取数据
df = pd.read_excel(r'C:/work/111.xlsx', '222', skiprows=0, nrows=30, usecols='A:C')
# 转换为嵌套列表
df_list = df.values.tolist()

# 加载工作簿并获取目标工作表
op_wb = op.load_workbook(r'C:/work/111.xlsx')
op_sht_333 = op_wb['333']

# 追加数据到工作表
for row in df_list:
    op_sht_333.append(row)

# 保存文件
op_wb.save(r'C:/work/111.xlsx')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:17:19