使用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方法会触发错误。
修正步骤
正确加载工作簿与工作表
先加载完整的工作簿对象,再从中获取目标工作表:op_wb = op.load_workbook(r'C:/work/111.xlsx') op_sht_333 = op_wb['333']简化数据转换代码
原转换代码冗余,直接用df.values.tolist()即可将DataFrame转为嵌套列表,无需额外numpy操作:df_list = df.values.tolist()执行追加操作
循环嵌套列表,逐行追加到目标工作表: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
相关产品推荐
相关产品推荐

