如何用to_excel将Pandas DataFrame追加至已有xlsx文件?为何失败?
问题描述
我已经用xlsxwriter向xlsx文件写入内容,代码如下:
workbook = xlsxwriter.Workbook(file_name) worksheet = workbook.add_worksheet() worksheet.write(row, col, value) worksheet.close()
我希望通过to_excel方法在该文件的已有行之后添加一个DataFrame,代码如下:
df.to_excel(file_name, startrow=len(existing_content), engine='xlsxwriter')
但该操作未生效,DataFrame并未被插入到文件中,请问原因是什么?
原因及解决办法
- xlsxwriter不支持追加写入:xlsxwriter引擎仅支持创建新文件或覆盖已有文件,无法对已存在的Excel文件执行追加内容的操作,这是导致你操作失效的核心原因。
- 正确实现方式:若要在已有Excel文件后追加DataFrame,需改用支持追加模式的引擎(比如
openpyxl,适用于xlsx格式),具体步骤如下:- 先读取原文件内容,获取已有数据的行数
- 以
mode='a'的方式打开文件,指定startrow写入DataFrame
示例代码:
import pandas as pd from openpyxl import load_workbook # 获取已有内容的行数 excel_file = pd.ExcelFile(file_name) df_existing = excel_file.parse(excel_file.sheet_names[0]) existing_rows = len(df_existing) # 追加DataFrame到文件 with pd.ExcelWriter(file_name, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer: df.to_excel(writer, startrow=existing_rows, index=False)
注:原文件用xlsxwriter创建时,用openpyxl打开不会有兼容性问题,二者均遵循标准xlsx格式规范。
内容的提问来源于stack exchange,提问作者haojie
相关产品推荐
相关产品推荐

