如何每次运行Python脚本时为现有.xlsx文件新增工作表?
解决Excel文件新增工作表不覆盖的问题
默认情况下,pandas的ExcelWriter会创建新文件覆盖原有内容,要实现每次运行新增工作表,需要借助openpyxl引擎以追加模式操作现有文件,具体实现如下:
步骤1:安装依赖库
确保已安装openpyxl,未安装则执行:
pip install openpyxl
步骤2:修改代码实现追加逻辑
替换你现有的写入代码,改为以下自动处理文件存在/不存在情况的逻辑:
import pandas as pd from openpyxl import load_workbook import datetime # 定义文件路径和当前日期(作为工作表名称) file_path = "your_price_data.xlsx" # 若同一天多次运行,建议加上时分秒避免重名:"%Y-%m-%d_%H-%M-%S" sheet_name = datetime.datetime.now().strftime("%Y-%m-%d") try: # 加载现有Excel文件 book = load_workbook(file_path) # 以追加模式打开,指定openpyxl引擎 with pd.ExcelWriter( file_path, engine="openpyxl", mode="a", if_sheet_exists="replace" # 可选:replace替换同名表/ new新建带后缀表/ error抛出错误 ) as writer: # 写入新工作表,index=False避免生成多余索引列 df.to_excel(writer, sheet_name=sheet_name, index=False) except FileNotFoundError: # 文件不存在时,直接创建新文件并写入第一个工作表 with pd.ExcelWriter(file_path) as writer: df.to_excel(writer, sheet_name=sheet_name, index=False)
关键参数说明
mode='a':设置为追加模式,允许向现有Excel文件添加新工作表engine='openpyxl':仅openpyxl引擎支持对现有.xlsx文件的追加操作if_sheet_exists:处理同名工作表的策略,按需选择:'replace':覆盖已存在的同名工作表'new':自动创建带后缀的新工作表(如2024-05-20_1)'error':抛出异常终止运行
注意事项
- 运行脚本时确保目标Excel文件未被其他程序(如Excel客户端)占用,否则会触发权限错误
- 工作表名称需符合Excel规则:最长31字符,不能包含
\ / ? * [ ]等特殊字符
内容的提问来源于stack exchange,提问作者Benjamin Parsons
相关产品推荐
相关产品推荐

