from openpyxl import *
wb = load_workbook('output.xlsx', data_only=True)
sh = wb["Sheet1"]
val=(sh['C5'].value)
文件output.xlsx包含公式“C5=A1+B1”,单元格C5的值为2,但我无法获得这个值。 有人可以帮助我吗? 可能需要其他库来读取xslx文件中公式的值。可能有一个示例如何做到这一点? 我知道可以将此文件转换为其他格式进行阅读,但对于此任务不适用。
from openpyxl import *
wb = load_workbook('output.xlsx', data_only=True)
sh = wb["Sheet1"]
val=(sh['C5'].value)
文件output.xlsx包含公式“C5=A1+B1”,单元格C5的值为2,但我无法获得这个值。 有人可以帮助我吗? 可能需要其他库来读取xslx文件中公式的值。可能有一个示例如何做到这一点? 我知道可以将此文件转换为其他格式进行阅读,但对于此任务不适用。
有许多解决方案可以获取Excel单元格的值。这完全取决于您所处的环境来获取计算后的单元格值。
如果您使用Excel创建xls或xlsx文件,通常单元格中会有一个值。虽然可能有关闭保存时重新计算的情况,但这是很平常的。如果有人关闭了保存时的重新计算,那么该值可能不正确。
如果xls或xlsx文件是由非Excel库(例如:openpyxl、xlwrt)创建的,并且除非您明确设置了单元格的值,否则它可能没有值。
感谢Python世界,有可选方案。
Pycel、xlcalculator、DataNitro、Formulas和Schedula可以读取Excel文件并计算单元格的公式。这些解决方案都不需要安装Excel。其中大部分可能独立于操作系统。
免责声明:我是xlcalculator的项目所有者。
以下是使用xlcalculator的示例:
from xlcalculator import ModelCompiler
from xlcalculator import Model
from xlcalculator import Evaluator
filename = r'output.xlsx'
compiler = ModelCompiler()
new_model = compiler.read_and_parse_archive(filename)
evaluator = Evaluator(new_model)
val1 = evaluator.evaluate('Sheet1!C5')
print("value 'evaluated' for Sheet1!C5:", val1)
昨天我遇到了这个问题,并在stackoverflow上找到了一些相关帖子。请查看Charlie Clark的帖子Read Excel cell value and not the formula computing it -openpyxl。
"openpyxl不会评估公式。当您使用openpyxl打开Excel文件时,您可以选择读取公式或最后计算的值。如果,如您所示,公式依赖于插件,则缓存的值永远无法准确。由于插件位于文件规范之外,因此它们永远不会得到支持。相反,您可能需要查看类似xlwings的东西,它可以与Excel运行时交互。"
使用xlwings读取公式单元格的值似乎是一个解决方案,但对我来说不起作用,因为xlwings只适用于Mac OS和Windows。