使用pycel将Excel移植到Python

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之间的公式传递的,我还没有测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vener__

如果解决了困扰你的难题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值