pandas覆盖Excel指定工作表且保留其他工作表的实现方法
覆盖Excel指定工作表且保留其余内容的实现方案
pandas默认xlsx写入为全量覆盖模式,直接打开已有文件写入会清空所有原有工作表,无法实现单表替换、其余内容保留的效果。
由于你代码中已经导入了openpyxl库,直接将其作为写入引擎,开启追加写入模式、配置同名工作表替换规则即可,无需重新读取全量工作表重写整个文件,执行效率更高。
可直接替换的代码段
将你原来注释掉的无效逻辑替换为以下代码即可:
# 拼接汇总Excel的完整存储路径 summary_path = os.path.join(dest, f'{timestr}Usage-SvnAnalysis.xlsx') # 读取目标工作表数据,完成新增字段计算 svnUsers = pd.read_excel(summary_path, sheet_name="SvnUsers") details = pd.read_excel(summary_path, sheet_name="UserDetails") svnUsers = svnUsers.assign(SVNaccount=svnUsers["accountName"].isin(details["Account"]).astype(bool)) print(svnUsers) # 以追加模式打开文件,仅替换同名的SvnUsers工作表,其余工作表完整保留 with pd.ExcelWriter( summary_path, engine="openpyxl", mode="a", if_sheet_exists="replace" ) as writer: svnUsers.to_excel(writer, sheet_name="SvnUsers", index=False)
注意事项
- 该写法要求pandas版本≥1.4.0,若运行提示参数不存在,执行
pip install --upgrade pandas openpyxl升级依赖即可 - 需在初始生成汇总文件的写入器完全关闭后再执行这段逻辑,避免文件句柄占用报错
- 写入时保留
index=False参数,避免生成多余的行索引列
内容的提问来源于stack exchange,提问作者Champs
相关产品推荐
相关产品推荐

