模板里合计列本来是 =SUM(D2:D50),导出后打开显示数字,改任一单元格合计不变,公式栏里也是空的。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

wb = load_workbook('tpl.xlsx', data_only=False)
ws = wb.active
ws['D51'] = '=SUM(D2:D50)'
wb.save('out.xlsx')

用 data_only=True 读模板时拿到的是缓存结果,再写回就只剩值。或者写入时单元格类型被设成数字,等号开头的字符串被当普通文本。这一点先确认清楚,后面就不用反复试。

碰到「导出公式丢失」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

具体做法是,读模板用 data_only=False 保留公式;写公式时给单元格赋等号开头的字符串 不要先算好;打开文件改一个数 看合计是否跟着变。

改完照着核一遍,导出文件里合计列仍是公式,改动明细后合计自动重算。

作者 9823189