Python中DataFrame追加至已有Excel工作表失败问题求助
问题原因
- 参数传错位置:
sheet_name是to_excel()方法的专属参数,你把它放到了pd.ExcelWriter()的构造参数里,这个参数会被ExcelWriter直接忽略。调用to_excel()时没指定sheet_name,pandas默认会尝试创建新工作表,而原文件已有Sheet1,openpyxl会自动给新表命名为Sheet 1(首次重复)、Sheet 11(二次重复),于是出现了新工作表。 - 对
if_sheet_exists="overlay"的误解:即使参数位置正确,这个参数的作用是覆盖整个目标工作表的内容,而非追加数据到末尾,依然达不到你想要的效果。
正确实现:追加数据到Sheet1底部
要实现追加,需要先读取原有工作表的已用行数,再把新数据从该行开始写入:
import pandas as pd from openpyxl import load_workbook xlsx_path = "你的文件路径.xlsx" # 加载已有工作簿,获取Sheet1的最大行数 wb = load_workbook(xlsx_path) ws = wb["Sheet1"] start_row = ws.max_row # 这是已有数据最后一行的下一行位置 with pd.ExcelWriter(xlsx_path, mode="a", engine="openpyxl", if_sheet_exists="overlay") as writer: # 调用to_excel时指定sheet_name和startrow transfer.to_excel(writer, sheet_name="Sheet1", header=None, index=False, startrow=start_row)
补充说明
start_row = ws.max_row:openpyxl的max_row会返回工作表中包含数据的最后一行行号,新数据从这一行开始写入,刚好接在原有数据底部。if_sheet_exists="overlay":这里指定覆盖从start_row开始的内容(因为我们取了max_row,所以只会在空白区域写入,不会影响已有数据)。
内容的提问来源于stack exchange,提问作者jocho
相关产品推荐
相关产品推荐

