IronCalc is a free, open source office suites project written in Rust and released under Apache-2.0. It has 4,163 GitHub stars, 183 forks and 256 open issues, and was last pushed 15 hours ago. On this registry it ranks #4 of 5 tracked projects in Office Suites, with 5 head-to-head comparisons available. It gained 9 stars over the last 6 tracked days.

What is IronCalc ?

What it is

IronCalc is a spreadsheet engine and set of tools. It is the main engine of the IronCalc ecosystem, and it lives in the Rust open-source spreadsheet ecosystem. The project provides a work-in-progress engine, an xlsx reader, and an xlsx writer. It is designed to be embedded, self-hosted, or run in the browser.

The concrete problem it solves is the need for a reusable spreadsheet core, so developers do not build formula evaluation, sheet models, and file import from scratch. The README describes a model that can set user input, add sheets, evaluate formulas, and save to xlsx. It also describes skins for terminal, desktop, and web applications. This gives a common engine for spreadsheet tools that need to work across Rust, Python, JavaScript, nodejs, and potentially R, Julia, or Go.

Key capabilities

  • It evaluates spreadsheet formulas in a model, as shown by =SUM(Sheet1!A1:CV100) and model.evaluate().
  • It reads and writes xlsx files through the included xlsx reader and writer.
  • It exposes spreadsheet operations through a Rust API, documented at https://docs.rs/ironcalc.
  • It supports embedding in Python, JavaScript through wasm, and nodejs, with possible support for R, Julia, or Go.
  • It provides a browser preview at https://app.ironcalc.com, which runs entirely in the browser.

Who uses it and how

  • Developers can add IronCalc in Cargo.toml and use the Model type to create sheets, set cell values, and save an xlsx file.
  • Application teams can use it as a backend for a web spreadsheet, because the README mentions web applications and the topics include React.
  • Self-hosters can start the application with docker compose up --build and open the local app for testing.
  • SaaS builders can integrate an MIT/Apache licensed spreadsheet engine into their product, as the README invites businesses to do.

Getting started

Typical methods are docker compose up --build for the application, cargo build --release for a Rust build, and adding ironcalc = { git = "https://github.com/ironcalc/IronCalc", version = "0.8"} to Cargo.toml. The README also points to an early browser preview at https://app.ironcalc.com.

When to use it — and when not to

IronCalc is suitable when a project needs an open-source spreadsheet engine that can be embedded, self-hosted, or run in the browser. It is less suitable when a team needs a mature, fully staffed product, because the README calls it work-in-progress and says it does not have a vibrant community yet. A self-hoster must operate the Docker Compose setup or the Rust build toolchain, with repository metadata showing 256 open issues and 0 contributors, so evaluation should include testing and maintenance.

project readme (upstream, from github) — read inline

IronCalc

MIT licensed Apache 2.0 licensed Build Status Code coverage docs-badge Discord chat

IronCalc is a new, modern, work-in-progress spreadsheet engine and set of tools to work with spreadsheets in diverse settings.

This repository contains the main engine and the xlsx reader and writer.

Programmed in Rust, you will be able to use it from a variety of programming languages like Python, JavaScript (wasm), nodejs and possibly R, Julia or Go.

We will build different skins: in the terminal, as a desktop application or use it in your own web application.

Docker

If you have docker installed just run:

docker compose up --build

head over to to test the application.

Building

cargo build --release

Testing, linting and code coverage

Test are run automatically and test coverage can always be found in codecov

If you want to run the tests yourself:

make tests

Note that this runs unit tests, integration tests, linter tests and formatting tests.

If you want to run the code coverage yourself:

make coverage
cd target/coverage/html/
python -m http.server

API Documentation

Documentation is published at: https://docs.rs/ironcalc/latest/ironcalc/

It might be generated locally

$ make docs
$ cd target/doc
$ python -m http.server

And visit

Simple example

Add the dependency to Cargo.toml:

[dependencies]
ironcalc = { git = "https://github.com/ironcalc/IronCalc", version = "0.8"}

And then use this code in main.rs:

use ironcalc::{
    base::{expressions::utils::number_to_column, Model},
    export::save_to_xlsx,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut model = Model::new_empty("hello-calc.xlsx", "en", "UTC", "en")?;
    // Adds a square of numbers in the first sheet
    for row in 1..100 {
        for column in 1..100 {
            let value = row * column;
            model.set_user_input(0, row, column, format!("{}", value));
        }
    }
    // Adds a new sheet
    model.add_sheet("Calculation")?;
    // column 100 is CV
    let last_column = number_to_column(100).unwrap();
    let formula = format!("=SUM(Sheet1!A1:{}100)", last_column);
    model.set_user_input(1, 1, 1, formula);

    // evaluates
    model.evaluate();

    // saves to disk
    save_to_xlsx(&model, "hello-calc.xlsx")?;
    Ok(())
}

See more examples in the examples folder of the xlsx crate.

ROADMAP

See https://github.com/ironcalc

Early testing

An early preview of the technology running entirely in your browser:

https://app.ironcalc.com

Collaborators needed!. Call to action

We don't have a vibrant community just yet. This is the very stages of the project. But if you are passionate about code with high standards and no compromises, if you are looking for a project with high impact, if you are interested in a better, more open infrastructure for spreadsheets, whether you are a developer (rust, python, TypeScript, electron/tauri/anything else native app, React, you name it), a designer, an Excel power user who wants features, a business looking to integrate a MIT/Apache licensed spreadsheet in your own SaaS application join us!

The best place to start will be to join or discord channel or send us an email at [email protected].

Many have said it better before me:

Folks wanted for hazardous journey. Low wages, bitter cold, long hours of complete darkness. Safe return doubtful. Honour and recognition in event of success.

License

Licensed under either of

at your option.

Frequently asked questions

Is IronCalc free to use?

IronCalc is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does IronCalc do?

A spreadsheet engine you can embed, self-host, or run in the browser

What is IronCalc written in?

IronCalc is primarily written in Rust. Its source is publicly available at https://github.com/ironcalc/ironcalc, and it has 4,163 GitHub stars.