Python使用openpyxl写入含公式Excel速度慢,如何关闭计算提速
性能优化方案
你对耗时原因的判断准确,性能损耗完全来自openpyxl对文件内公式的自动全量重算,可通过以下配置优化:
- 加载工作簿时关闭自动计算
给load_workbook方法添加calc_mode="manual"参数,该配置会强制openpyxl跳过所有公式的重算步骤,仅保留公式原逻辑,后续在Excel中打开文件时会根据系统设置决定是否重算,不会影响公式正常使用。 - 简化工作表加载逻辑
如果你写入的目标工作表和包含大量公式的工作表无关联,无需加载全部工作表的映射关系,仅保留目标工作表即可,减少不必要的内存占用和处理耗时。 - 升级openpyxl版本
3.0以下版本的openpyxl对公式的处理存在已知性能缺陷,升级到最新稳定版通常可以直接获得30%以上的速度提升。
优化后代码示例
# 核心修改点:添加calc_mode参数关闭自动重算 book = load_workbook(file_name, calc_mode="manual") writer = pd.ExcelWriter(file_name, engine='openpyxl') writer.book = book # 仅加载目标工作表时使用下行替换原有sheets赋值逻辑 # writer.sheets = {sheet_name: book[sheet_name]} writer.sheets = dict((ws.title, ws) for ws in book.worksheets) df.to_excel(writer, sheet_name=sheet_name, index=False) writer.save() writer.close()
内容的提问来源于stack exchange,提问作者ktnrpr
相关产品推荐
相关产品推荐

