openpyxl保存Excel文件后所有工作表原有下拉列表消失问题咨询
问题原因
你遇到的下拉列表丢失问题,是openpyxl默认加载逻辑导致的:Excel里的下拉列表本质是数据验证(Data Validation)规则,openpyxl默认加载工作簿时不会读取这类规则,所以内存里的工作簿对象从一开始就没有原文件的下拉列表配置,保存后自然所有工作表的下拉都会失效,和你后续的写入逻辑无关。
修复方法
修改你的openExcelFile函数中加载工作簿的代码,新增keep_data_validation=True参数,强制openpyxl加载时保留原文件的所有数据验证规则:
def openExcelFile(path: str = None) -> openpyxl: if path is None: raise ValueError("path is None!") # 新增keep_data_validation参数 return openpyxl.load_workbook(path, keep_data_validation=True)
注意事项
- 该参数仅在openpyxl 3.0及以上版本支持,若版本过低先执行升级命令:
pip install --upgrade openpyxl - 如果你插入行的位置属于原下拉列表的覆盖范围,插入后如果新行没有自动继承下拉规则,可以手动给新行单元格追加对应的数据验证配置,常规场景下开启上述参数后原有工作表的所有下拉规则都会完整保留。
内容的提问来源于stack exchange,提问作者XaniXxable
相关产品推荐
相关产品推荐

