1.适用需求
有些工作可能长期适用excel来进行公式计算,当需要把工作流程转换为可视化界面时,开发人员不懂专业逻辑,手动摸索公式很大可能出错,而且费时费力
2.可用工具及缺点
pandas 方便进行数据处理,支持各种格式的表格,但是不支持公式识别
openpyxl 能够读取表格公式,但是不能自动计算,只支持xlsx格式
如果在没有office或wps的软件中,他保存的值还是原来的值,如果你的系统可以办公软件,那将保存的新表格重新打开就可以计算了,或者用代码调用excel的引擎来重新计算(需要先安装软件),但是大多数情况下服务器上不安装这类软件
pycel 能够读取表格公式,并且支持重新计算,没有发现修改单元格的值的用法
3.解决方案
使用openpyxl修改表格中的输入参数(自变量),将表格另存为新表格之后(看需求,覆盖也行),用pycel来读取结果单元格
from openpyxl import load_workbook
from pycel import ExcelCompiler# --- 步骤 1:用 openpyxl 修改 A2 的值并保留公式 ---
wb = load_workbook("test.xlsx")
sheet = wb["Sheet1"]# 修改 A2 的值为 4(保留 N16 的公式)
sheet["A2"].value = 8# 保存到新文件(保留所有公式)
wb.save("test_modified.xlsx")# --- 步骤 2:用 pycel 解析并计算 N16 的值 ---
excel = ExcelCompiler(filename="test_modified.xlsx")
excel.recalculate()n16_value = excel.evaluate("Sheet1!N16")
print(f"修改后 N16 的值: {n16_value}") # 输出公式计算结果
我测试了几个简单的公式,然后嵌套公式都没问题,官方说明里好像说的测了10个sheet以上的表没问题,估计也是支持sheet之间的公式传递的,我还没有测试