Traceback (most recent call last): File "E:\pycharm\PythonProject\excel导入测试.py", line 21, in <module> for r_idx, row in enumerate(form_content.itertuples(index=False,header=False), start=max_row + 1): ^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'list' object has no attribute 'itertuples'
时间: 2025-06-21 13:57:46 浏览: 21
### 解决将第二个表格追加写入已有 Excel 文件时出现的 AttributeError: 'list' object has no attribute 'itertuples'
在使用 `openpyxl` 或 `pandas` 将第二个表格追加写入已有的 Excel 文件时,如果出现 `AttributeError: 'list' object has no attribute 'itertuples'` 错误,通常是因为数据结构类型不匹配。具体来说,`itertuples()` 是 Pandas DataFrame 的方法,而列表对象没有该方法[^2]。
以下是解决此问题的专业方法:
#### 方法一:确保数据结构为 Pandas DataFrame
如果数据是以列表形式存储,则需要将其转换为 Pandas DataFrame。以下是一个完整的代码示例:
```python
import pandas as pd
from openpyxl import load_workbook
# 假设第二个表格的数据为以下列表
second_table_list = [[4, 7], [5, 8], [6, 9]]
# 将列表转换为 Pandas DataFrame
second_table = pd.DataFrame(second_table_list, columns=['A', 'B'])
# 加载现有的 Excel 文件
file_path = "example.xlsx"
wb = load_workbook(file_path)
ws = wb.active
# 获取当前 A 列的最后一行
max_row = ws.max_row
# 遍历 DataFrame 的数据并写入
for r_idx, row in second_table.iterrows(): # 使用 iterrows() 遍历每一行
ws.cell(row=r_idx + max_row + 1, column=1, value=row['A']) # 写入 A 列
# 保存修改后的文件
wb.save(file_path)
```
上述代码中,通过将列表转换为 Pandas DataFrame,可以正确使用 `iterrows()` 方法遍历数据[^2]。
#### 方法二:直接操作列表
如果不需要使用 Pandas,可以直接操作列表并将数据逐行写入 Excel 文件:
```python
from openpyxl import load_workbook
# 假设第二个表格的数据为以下列表
second_table_list = [[4, 7], [5, 8], [6, 9]]
# 加载现有的 Excel 文件
file_path = "example.xlsx"
wb = load_workbook(file_path)
ws = wb.active
# 获取当前 A 列的最后一行
max_row = ws.max_row
# 遍历列表并写入
for r_idx, row in enumerate(second_table_list, start=max_row + 1):
ws.cell(row=r_idx, column=1, value=row[0]) # 写入 A 列
# 保存修改后的文件
wb.save(file_path)
```
上述代码直接处理列表数据,避免了 Pandas 的依赖,同时确保数据正确写入到目标列。
#### 方法三:使用 Pandas 追加写入
如果希望使用 Pandas 的 `ExcelWriter` 功能进行追加写入,可以参考以下代码:
```python
import pandas as pd
# 假设第二个表格的数据为以下列表
second_table_list = [[4, 7], [5, 8], [6, 9]]
# 将列表转换为 Pandas DataFrame
second_table = pd.DataFrame(second_table_list, columns=['A', 'B'])
# 加载现有的 Excel 文件
file_path = "example.xlsx"
# 读取现有数据以确定写入位置
existing_data = pd.read_excel(file_path)
# 确定新数据的起始行
start_row = len(existing_data)
# 使用 ExcelWriter 追加写入
with pd.ExcelWriter(file_path, mode='a', if_sheet_exists='overlay', engine='openpyxl') as writer:
second_table.to_excel(writer, sheet_name='Sheet1', startrow=start_row, index=False, header=False)
```
上述代码利用 Pandas 的 `ExcelWriter` 功能,将数据追加写入到现有文件中,无需手动计算写入位置[^2]。
---
#### 错误原因分析
错误 `AttributeError: 'list' object has no attribute 'itertuples'` 的根本原因是尝试对列表对象调用 `itertuples()` 方法,而该方法仅适用于 Pandas DataFrame。确保数据结构为 Pandas DataFrame 是解决问题的关键[^2]。
---
阅读全文
相关推荐



















