
Formualizer
Embeddable spreadsheet engine — parse, evaluate, and mutate Excel workbooks from Rust.
formualizer is the batteries-included entry point for the Formualizer ecosystem. It re-exports the workbook, engine, parser, and SheetPort crates behind feature flags, so you can depend on a single crate and get everything you need.
When to use this crate
This is the recommended default for most Rust integrations. It gives you:
- Workbook API with sheets, values, formulas, undo/redo, and I/O backends
- 400+ Excel-compatible built-in functions
- Formula parsing, tokenization, and pretty-printing
- SheetPort runtime for typed spreadsheet I/O
If you only need a subset, depend on the individual crates directly:
formualizer-parse— parsing onlyformualizer-eval— calculation engine with custom resolversformualizer-workbook— workbook API without SheetPort
Quick start
use Workbook;
use LiteralValue;
let mut wb = new;
wb.add_sheet?;
wb.set_value?;
wb.set_value?;
wb.set_value?;
wb.set_formula?;
let payment = wb.evaluate_cell?;
Feature flags
| Feature | Default | Description |
|---|---|---|
portable-wasm |
Yes | Full stack preset: eval, workbook, sheetport, parse, common, with no ambient clock or JS runtime hooks |
system-clock |
Yes | Ambient wall-clock time for NOW(), TODAY() and friends; disable for wasmtime/non-JS wasm guests and inject a clock instead |
json |
Yes | JSON workbook serialization |
csv |
Yes | CSV workbook loading |
xlsx-recalc |
Yes | Explicitly invoked cache-only XLSX recalculation (recalculate_xlsx_bytes / file variants) |
eval |
via preset | Calculation engine and built-in functions |
workbook |
via preset | Workbook API with sheets, undo/redo |
sheetport |
via preset | SheetPort runtime (spreadsheets as typed APIs) |
parse |
via preset | Tokenizer, parser, pretty-printer |
common |
via preset | Shared types (values, errors, references) |
calamine |
No | XLSX/ODS reading via calamine, including runtime XlsxPathSource selection |
umya |
No | XLSX reading/writing via umya-spreadsheet 2 |
umya3 |
No | Opt-in umya-spreadsheet 3 backend sharing the same adapter algorithms |
js-runtime |
No | Browser/wasm-bindgen runtime hooks (web-time, JS-backed entropy); only for browser targets |
wasm-js |
No | Preset: portable-wasm + system-clock + js-runtime |
tracing / tracing_chrome |
No | Performance tracing hooks and Chrome trace output |
License
Dual-licensed under MIT or Apache-2.0, at your option.