在表上编辑输入数据后,openpyxl如何读取公式结果? data_only = True给我一个“无”结果

时间:2018-11-12 23:39:46

标签: python excel openpyxl

使用openpyxl,我可以读取一张纸上的2个数字,还可以通过向工作表中加载data_only=True来读取它们的总和。

但是,当我使用openpyxl更改2个数字,然后尝试使用data_only=True阅读答案时,它不返回任何输出。我该怎么做?

3 个答案:

答案 0 :(得分:3)

Pyopenxl不评估公式。在管理Excel文件方面很棒,位无法计算(评估)单元格。

PyCelxlcalculatorFormulasSchedula是Python库,可以评估Excel文件中的单元格。这些通常独立于操作系统,不需要安装Excel。

xlwingsPyXll,DataNitro和FlyingKoala都促进了Excel-Python的通信,因此您可以在Python中“使用” /与Excel一起使用。但是,使用这些解决方案时,您需要安装Excel。

使用xlcalculator评估Excel文件中的单元格的示例:

from xlcalculator import ModelCompiler
from xlcalculator import Model
from xlcalculator import Evaluator

filename = r'use_case_01.xlsm'
compiler = ModelCompiler()
new_model = compiler.read_and_parse_archive(filename)
evaluator = Evaluator(new_model)
val1 = evaluator.evaluate('First!A2')
print("value 'evaluated' for First!A2:", val1)

答案 1 :(得分:0)

您可以在openpyxl中具有 值或公式。正是为了避免混淆,这种编辑可能导致库的工作方式如此。要评估更改后的公式,您需要将文件加载到MS Excel或LibreOffice等应用中,该应用可以评估公式并存储结果。

答案 2 :(得分:0)

设置为true的

openpyxl data_only标志仅在加载文件时获得公式评估值。 更重要的是,仅当某些工具(例如MS Excel)已经评估了公式并存储了缓存的值时,data_only才能获取该值,否则openpyxl将获取“无”。 I found it from this answer