当前位置: 首页 > 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://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部署实践