如何将Python列表追加至已有数据的Excel列末尾?
实现向Excel同一列末尾追加数据的两种方案
使用openpyxl库(适用于.xlsx格式)
openpyxl可直接操作Excel单元格,精准控制写入位置,适合需要精细操作的场景。
- 导入依赖库
- 检查目标Excel文件是否存在:不存在则新建工作簿;存在则打开现有文件
- 获取目标列的已使用行数,确定追加的起始行号
- 遍历待写入列表,将值依次写入目标列的空白行
- 保存工作簿
from openpyxl import Workbook, load_workbook import os # 待追加的列表数据 new_data = ["新值1", "新值2", "新值3"] # Excel文件路径和目标列(A列对应索引1) file_path = "data.xlsx" target_col = 1 if os.path.exists(file_path): # 打开现有工作簿 wb = load_workbook(file_path) ws = wb.active # 计算追加起始行:已用行数+1 start_row = ws.max_row + 1 else: # 创建新工作簿 wb = Workbook() ws = wb.active start_row = 1 # 新文件从第一行开始写入 # 写入数据 for idx, value in enumerate(new_data): ws.cell(row=start_row + idx, column=target_col, value=value) wb.save(file_path)
使用pandas库(适用于快速批量处理)
pandas处理表格数据更高效,适合数据量较大或需结合其他数据处理流程的场景。
- 导入依赖库
- 检查文件是否存在:不存在则直接将列表转为DataFrame写入;存在则读取现有数据,追加新数据后写入
- 写入时需设置
mode='a'(追加模式)和header=False(避免重复写入表头)
import pandas as pd import os # 待追加的列表数据 new_data = ["新值4", "新值5", "新值6"] file_path = "data.xlsx" target_col = "A" # 目标列名 # 将新数据转为DataFrame new_df = pd.DataFrame(new_data, columns=[target_col]) if os.path.exists(file_path): # 读取现有数据并合并 existing_df = pd.read_excel(file_path) combined_df = pd.concat([existing_df, new_df], ignore_index=True) combined_df.to_excel(file_path, index=False) else: # 直接写入新数据 new_df.to_excel(file_path, index=False)
注意事项
- 若目标列有表头,需确保新数据结构与现有数据一致,避免格式混乱
- openpyxl不支持.xls格式,处理旧格式可使用
xlrd+xlwt库(注意xlrd 2.0+版本不再支持.xls) - 使用pandas时,需确保现有文件的列名与新数据列名匹配,否则会导致数据错位
内容的提问来源于stack exchange,提问作者Madeleine Saint James
相关产品推荐
相关产品推荐

