如何用Pandas向多工作表Excel的指定工作表添加单行数据?若不行请推荐其他库
用Python操作Excel指定工作表添加行数据
方法一:使用Pandas实现
Pandas可以完成需求,但需要注意保留原文件中的其他工作表(直接写入会覆盖整个文件),步骤如下:
- 读取Excel所有工作表为字典结构
- 获取目标工作表并添加新行
- 将所有工作表写回原文件
代码示例
import pandas as pd # 1. 读取整个Excel的所有工作表(sheet_name=None返回字典:键为表名,值为DataFrame) excel_data = pd.read_excel("your_file.xlsx", sheet_name=None) # 2. 获取指定工作表,比如名为"TargetSheet"的表 target_df = excel_data["TargetSheet"] # 准备要添加的行数据(两种方式可选) # 方式A:按列名匹配的字典 new_row = {"列1": "内容1", "列2": 2024, "列3": 3.14} new_row_df = pd.DataFrame([new_row]) # 方式B:按列顺序的列表(需与目标表列顺序完全一致) # new_row_list = ["内容1", 2024, 3.14] # new_row_df = pd.DataFrame([new_row_list], columns=target_df.columns) # 合并原表与新行(ignore_index=True重置索引) updated_df = pd.concat([target_df, new_row_df], ignore_index=True) # 更新字典中的目标工作表 excel_data["TargetSheet"] = updated_df # 3. 写回Excel文件,保留所有工作表 # engine选openpyxl适用于.xlsx格式;若为.xls需用xlwt/xlrd with pd.ExcelWriter("your_file.xlsx", engine="openpyxl", mode="a", if_sheet_exists="replace") as writer: for sheet_name, df in excel_data.items(): df.to_excel(writer, sheet_name=sheet_name, index=False)
方法二:使用openpyxl直接操作(推荐大文件场景)
如果Excel文件较大,Pandas读取全表会占用过多内存,推荐用openpyxl直接操作指定工作表,无需加载整个文件:
代码示例
from openpyxl import load_workbook # 加载Excel工作簿 wb = load_workbook("your_file.xlsx") # 获取指定工作表 ws = wb["TargetSheet"] # 直接追加一行数据(列表元素顺序需与表中列顺序一致) ws.append(["内容1", 2024, 3.14]) # 保存修改 wb.save("your_file.xlsx")
注意事项
- Pandas方法适合需要对数据做额外分析处理的场景,openpyxl更适合单纯的行追加操作,效率更高
- 操作前建议备份原Excel文件,避免意外覆盖数据
内容的提问来源于stack exchange,提问作者Velan
相关产品推荐
相关产品推荐

