The original motivation was server-side formula evaluation in Python. openpyxl reads and writes xlsx well but evaluates nothing - formula cells return None unless Excel cached values on last save. xlcalc actually evaluates but covers around 50 functions. If you needed XLOOKUP, SUMIFS with multiple criteria, IRR, XIRR, or dynamic arrays like FILTER and UNIQUE, you were either installing Excel on a Linux box or accepting the gaps.
There's a one-liner for the common case:
import formualizer as fz
fz.recalculate_file("model.xlsx", output="recalculated.xlsx")
Or drive it programmatically — load a workbook, change inputs, evaluate: wb = fz.load_workbook("model.xlsx")
wb.set_value("Assumptions", 3, 2, 0.08)
wb.evaluate_all()
print(wb.evaluate_cell("Summary", 5, 3)) # =IRR(...)
You can also register Python callbacks as first-class formula functions that participate in the dependency graph.The Rust and WASM targets are also fully supported - the engine is the core with Python, WASM, and a stable CFFI as targets.
Formal benchmarks are in progress!