首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用openpyxl Tokenizer解析Excel IF语句

问使用openpyxl Tokenizer解析Excel IF语句
EN

Stack Overflow用户
提问于 2018-07-26 05:34:59
回答 1查看 647关注 0票数 2

我找到了this doc on Tokenizer,但它没有说明如何使用该公式并实际执行它(如果没有它,似乎非常无用)。

我有一些简单的IF案例需要处理:

代码语言:javascript
复制
formula = '''IF(size<80000,size/80000*(1.85-1.65)+1.65,IF(size<160000
    (size-80000)/80000*(1.65-1.45)+1.45,IF(size<280000,(size-160000)/
    120000*(1.45-1.05)+1.05,IF(size<800000,(size-280000)/520000*(1.05-0.7)+0.7,0))))'''

from openpyxl.formula import Tokenizer
tok = Tokenizer(formula)

我可以看到tok的方法

代码语言:javascript
复制
print([d for d in dir(tok) if '__' not in d])
['ERROR_CODES', 'SN_RE', 'STRING_REGEXES', 'TOKEN_ENDERS', 'WSPACE_RE', '_parse', '_parse_brackets', '_parse_closer', '_parse_error', '_parse_opener', '_parse_operator', '_parse_separator', '_parse_string', '_parse_whitespace', 'assert_empty_token', 'check_scientific_notation', 'formula', 'items', 'offset', 'render', 'save_token', 'token', 'token_stack']

如果我想把size=100传递给这个tok实例并执行它来获得返回的结果,我该怎么做呢?

使用解析后的标记构建AST有一种显而易见的方法,但我很好奇是否可以将公式写入内存中的Excel文档并以这种方式执行函数,如果这样更容易的话。我没有用于此目的的Excel文档。我只是有很多公式字符串。

EN

回答 1

Stack Overflow用户

发布于 2018-07-26 15:24:02

openpyxl从不计算公式。标记器仅用于解包和重新分配共享公式。确实存在用于计算公式的其他库,但通常您最好将文件传递给MS Excel或OpenOffice或LibreOffice等应用程序进行评估,因为这些应用程序包含计算优化,包括并行化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51528009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档