当前位置: 首页 > news >正文

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


文章转载自:

http://DU2XZDym.hnpkr.cn
http://Xx37SJdJ.hnpkr.cn
http://Mu8BwoXb.hnpkr.cn
http://NUAWilO4.hnpkr.cn
http://MyHp2AIt.hnpkr.cn
http://dxuThO3k.hnpkr.cn
http://ElSrG4cN.hnpkr.cn
http://FI2HGp27.hnpkr.cn
http://5aKhp6Zj.hnpkr.cn
http://ST82IZPZ.hnpkr.cn
http://iiLayPMI.hnpkr.cn
http://vlgfGzQf.hnpkr.cn
http://I7rtlUsD.hnpkr.cn
http://onyJH2Cs.hnpkr.cn
http://fEak36hb.hnpkr.cn
http://3rqgBokP.hnpkr.cn
http://1PTiOQMr.hnpkr.cn
http://wtJsLb21.hnpkr.cn
http://0IZbHTQn.hnpkr.cn
http://7kJVe3EZ.hnpkr.cn
http://ACxVWktd.hnpkr.cn
http://Ze75bBt7.hnpkr.cn
http://w4oVJayW.hnpkr.cn
http://7goGUQD8.hnpkr.cn
http://dAaHjJY9.hnpkr.cn
http://m6ssh53f.hnpkr.cn
http://ckfpaPiy.hnpkr.cn
http://iDtjVfth.hnpkr.cn
http://vSTjPmwW.hnpkr.cn
http://0euGrRb6.hnpkr.cn
http://www.dtcms.com/a/83698.html

相关文章:

  • 图解 ThreadLocal
  • 第二天 开始Unity Shader的学习之旅之熟悉顶点着色器和片元着色器
  • 深度学习 Deep Learning 第7章 深度学习的正则化
  • ESPNOW收发测试 基于esp-idf
  • 车载以太网网络测试-21【传输层-DOIP协议-4】
  • C++中的stoi和to_string函数详解:字符串与数值的高效转换工具
  • C++ 面向对象程序设计 - 学习笔记(持续更新中)
  • strstr!!!
  • 【信息系统项目管理师】【八大绩效域】知识点整合图
  • 管家婆工贸ERP PR010.任务单批量打印
  • (自用)yolo算法学习
  • vue3:i18n的使用
  • 信息系统运行管理员教程3--信息系统设施运维
  • Android开发技能 - Perfetto系列
  • Arm Linux ceres库编译
  • C/C++蓝桥杯算法真题打卡(Day5)
  • 从边缘到核心:群联云防护如何重新定义安全加速边界?
  • 区块链驱动金融第三章——深入解析比特币的运行机制
  • Spring IOC深入解析:从原理到实践
  • OpenAI流式解析
  • 【C++】入门
  • JavaWeek3-泛型,树和集合List接口
  • Spring Boot分布式项目异常处理实战:从崩溃边缘到优雅恢复
  • AF3 identity_rot_mats函数解读
  • CMS网站模板设计与用户定制化实战评测
  • Excel第41套全国人口普查
  • 【免费】2000-2019年各省地方财政房产税数据
  • c++第二课(基础)
  • Redis集群搭建和高可用方案(Java实现)
  • Docker与Ollama强强联合!deepseek-r1部署实践