使用pycel将Excel移植到Python

news/2025/3/24 10:24:34/

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


http://www.ppmy.cn/news/1581592.html

相关文章

css white-space: pre-line; 用处大

1.normal:忽略多余的空白,只保留一个空白(默认); 2.pre:保留空白(行为方式类似于html中的pre标签); 3.nowrap:只保留一个空白,文本不会换行,会在在同一行上继续,直到遇到br标签为止。…

网络不可达

导致此问题原因较多,我只针对一种情况进行讨论,如果和文中症状不同,另寻他处,或者死马当活马医(?) 如需转载,标记出处 症状: 1.ping命令网络不可达 2.ifconfig中网卡en…

背包问题——多重背包(C语言)

代码如下&#xff1a; #include<stdio.h>int knapsack(int weight[], int value[], int count[], int n, int capacity) {int* dp (int*)malloc(sizeof(int) * (capacity 1));for (int i 0; i < capacity; i){dp[i] 0;}for (int i 0; i < n; i)//核心代码{fo…

yarn 装包时 package里包含sqlite3@5.0.2报错

yarn 装包时 package里包含sqlite35.0.2报错 解决方案&#xff1a; 第一步&#xff1a; 删除package.json里的sqlite35.0.2 第二步&#xff1a; 装包&#xff0c;或者增加其他的npm包 第三步&#xff1a; 在package.json里增加sqlite35.0.2&#xff0c;并运行yarn装包 此…

Linux——空间清理的方法

一、清理大的缓存文件 cd ~/.cachelssudo du -h -d 1例如 删除占2G空间的 vscode-cpptools 文件夹 rm -rf vscode-cpptools/参考文章 【linux】ubuntu空间清理的9个方法

阿里云底层使用的虚拟化技术

‌阿里云底层使用的虚拟化技术主要是KVM&#xff08;[Kernel-based Virtual Machine&#xff09;‌。KVM是一种基于内核的虚拟机技术&#xff0c;它允许Linux内核直接管理虚拟机的创建和运行&#xff0c;提供高效的虚拟化解决方案‌12。 KVM技术的特点和应用场景 KVM具有以下…

再学:区块链基础与合约初探 EVM与GAS机制

目录 1.区块链是什么 2.remix ​3.账户​ ​4.以太坊三种交易​ 5.EVM 6.以太坊客户端节点 ​7.Gas费用 8.区块链浏览器 1.区块链是什么 只需要检验根节点 Merkel根是否有更改&#xff0c;就不用检查每个交易是否有更改。方便很多。 2.remix 3.账户 如果交易失败的话&…

mapper.xml中 “http://mybatis.org/dtd/mybatis-3-mapper.dtd“> 报错的解决方法

我用mybatisx自动生成代码&#xff0c;但是mapepr.xml中的 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">报错&#xff0c;如下图&#xff0c;圈起来的部分是之前的报错&#xff0c;现在已经解决&#xff0c;所以没有爆红&#xff1a; 解决方法&#xff1a;…