gpt4 book ai didi

python - 将单元格中的 Excel 公式转换为 Python 脚本中的函数

转载 作者:行者123 更新时间:2023-12-04 13:24:07 33 4
gpt4 key购买 nike

我一直在尝试将 Excel 工作簿中的公式转换为 Python 脚本中的等效 Python 函数或语句。
在我的工作场所,我们有旧的 Excel 工作簿,用于工程过程中的计算(例如设计混凝土结构)。这些计算涉及许多公式和公式之间的引用。我想将这些工作簿中的公式转换为“等效”Python 函数,结果是这些 Excel 工作簿随后被 Python 脚本替换(出于这些技术文档的可维护性和工作流程验证的原因)。
用一个基本的例子来演示这个原理。
如果有一张 Excel 工作簿(名称 = Sheet1)

value in cell A1 = 2
value in cell A2 = 3
value in cell A3 = '=A1+A2' = 5
这个 Python 函数将是期望的结果:
def A3(A1,A2):
return A1+A2
或者使用全局变量
A3 = 0

def A3(A1,A3):
A3 = A1 + A3
另一个涉及条件语句的更复杂的例子:
带有两张工作表的 Excel 工作簿(“Sheet1”和“Sheet2”)
Sheet1!A1 = 2   
Sheet1!A2 = 3
Sheet1!A3 = False

Sheet2!A1 = '=IF(Sheet1!A3 == True; Sheet1!A1+Sheet1!A2; Sheet1!A1*Sheet1!2)' = 6
在 Python 中会变成(或类似的东西):
def Sheet2!A1(Sheet1!A1,Sheet1!A2):

if Sheet!A3 == True:
return Sheet1!A1+Sheet1!A2

else:
return Sheet1!A1 * Sheet1!A2
我曾尝试将 openpyxl(用于阅读工作簿)与公式(模块)和 pycel 结合使用,但我无法弄清楚如何进行这样的转换。
如果我理解正确,公式包和 pycel 包可以识别和转换 Excel 函数(对 Python 吗?)。或者他们只是在运行时这样做?
具体来说,我想知道如何从本质上将 Excel 公式编译为 Python 函数。
一般问题:有没有办法自动将 Excel 工作簿转换为等效的 Python 脚本?

最佳答案

Pycel 可用于将 xlsx 文件编译为 Python 代码,但可能不是您希望的方式。
使用您的示例作为 example.xlsx,执行以下代码:

from pycel import ExcelCompiler

excel_compiler = ExcelCompiler('example.xlsx')
excel_compiler.to_file(file_types='yaml')
将导致生成此 yaml 文件:
cycles: false
excel_hash: b99b0d1174e4bfaceddeeb70bde09c9f
cell_map:
Sheet1!A1: 2
Sheet1!A2: 3
Sheet1!A3: false
Sheet2!A1: =if_(_C_("Sheet1!A3") == True, _C_("Sheet1!A1") + _C_("Sheet1!A2"), _C_("Sheet1!A1") * _C_("Sheet1!A2"))
filename: example.xlsx
cell_map 的字典值是 Python 代码,实际上在评估单元格时由 pycel 执行。但是,由于 Excel 代码的执行模型与 Python 有所不同,因此在执行过程中会发生一些小魔法。
免责声明:我是 pycel 的维护者

关于python - 将单元格中的 Excel 公式转换为 Python 脚本中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69690629/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com