Python从xlsx读取值公式

Iva*_*_47 4 python excel

我在从 xslx 文件读取公式值时遇到问题。为了获得价值,我使用 openpyxl,但是当我想获得价值时,我看到“无”。这是我的代码:

from openpyxl import *
wb = load_workbook('output.xlsx', data_only=True)
sh = wb["Sheet1"]
val=(sh['C5'].value)
Run Code Online (Sandbox Code Playgroud)

文件output.xlsx包含公式“C5=A1+B1”,单元格C5=2,但我无法获取该值。任何人都可以帮助我。可能我需要其他库来从 xslx 文件中读取公式的值。可能存在样本怎么办?我知道可以将此文件转换为其他格式以供阅读,但它不适用于此任务。

bra*_*ase 5

有多种解决方案可以从 Excel 单元格中获取值。这完全取决于您获取评估的单元格值时所处的环境。

如果您使用 Excel 创建 xls 或 xlsx 文件,单元格中通常会有一个值。不能保证这一点,因为可以在保存时关闭重新计算,但这是常见的。并且,如果有人关闭了保存时重新计算,则该值可能不正确。

如果 xls 或 xlsx 文件是由非 Excel 库(例如 openpyxl、xlwrt)创建的,除非您明确设置了单元格的值,否则它可能没有该值。

感谢 Python 宇宙,我们有了多种选择。

Pycelxlcalculator、 DataNitro、FormulasSchedula可以读取 Excel 文件并计算单元格的公式。这些解决方案都不需要安装 Excel。大多数可能是独立于操作系统的。

  • 我找不到 datanitro 链接

免责声明:我是 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)
Run Code Online (Sandbox Code Playgroud)