{"id":19898262,"url":"https://github.com/ironcalc/IronCalc","last_synced_at":"2025-05-02T21:30:37.395Z","repository":{"id":208896827,"uuid":"721069510","full_name":"ironcalc/IronCalc","owner":"ironcalc","description":"Main engine of the IronCalc ecosystem","archived":false,"fork":false,"pushed_at":"2025-04-23T09:44:42.000Z","size":5805,"stargazers_count":2390,"open_issues_count":89,"forks_count":70,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-23T10:40:53.244Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ironcalc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-Apache-2.0","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-20T09:47:54.000Z","updated_at":"2025-04-21T14:22:29.000Z","dependencies_parsed_at":"2024-02-13T16:30:53.860Z","dependency_job_id":"d610fc17-7661-4fc5-b833-be6063c917bf","html_url":"https://github.com/ironcalc/IronCalc","commit_stats":null,"previous_names":["ironcalc/ironcalc"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironcalc%2FIronCalc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironcalc%2FIronCalc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironcalc%2FIronCalc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ironcalc%2FIronCalc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ironcalc","download_url":"https://codeload.github.com/ironcalc/IronCalc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252108575,"owners_count":21696098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T19:01:25.516Z","updated_at":"2025-05-02T21:30:37.383Z","avatar_url":"https://github.com/ironcalc.png","language":"Rust","funding_links":[],"categories":["Libraries","Rust","react","Utilities \u0026 Productivity"],"sub_categories":["Data processing"],"readme":"# IronCalc\n\n[![MIT licensed][mit-badge]][mit-url]\n[![Apache 2.0 licensed][apache-badge]][apache-url]\n[![Build Status][actions-badge]][actions-url]\n[![Code coverage][codecov-badge]][codecov-url]\n[![docs-badge]][docs-url]\n[![Discord chat][discord-badge]][discord-url]\n\n[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[mit-url]: https://github.com/ironcalc/IronCalc/blob/main/LICENSE-MIT\n\n[apache-badge]: https://img.shields.io/badge/License-Apache_2.0-blue.svg\n[apache-url]: https://github.com/ironcalc/IronCalc/blob/main/LICENSE-Apache-2.0\n\n[codecov-badge]: https://codecov.io/gh/ironcalc/IronCalc/graph/badge.svg?token=ASJX12CHNR\n[codecov-url]: https://codecov.io/gh/ironcalc/IronCalc\n\n[actions-badge]: https://github.com/ironcalc/ironcalc/actions/workflows/rust-build-test.yaml/badge.svg\n[actions-url]: https://github.com/ironcalc/IronCalc/actions/workflows/rust-build-test.yaml?query=workflow%3ARust+branch%3Amain\n\n[docs-url]: https://docs.rs/ironcalc\n[docs-badge]: https://img.shields.io/docsrs/ironcalc?logo=rust\u0026style=flat-square\n\n[discord-badge]: https://img.shields.io/discord/1206947691058171904.svg?logo=discord\u0026style=flat-square\n[discord-url]: https://discord.gg/zZYWfh3RHJ\n\nIronCalc is a new, modern, work-in-progress spreadsheet engine and set of tools to work with spreadsheets in diverse settings.\n\nThis repository contains the main engine and the xlsx reader and writer.\n\nProgrammed 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.\n\nWe will build different _skins_: in the terminal, as a desktop application or use it in you own web application.\n\n# Building\n\n```bash\ncargo build --release\n```\n\n# Testing, linting and code coverage\n\nTest are run automatically and test coverage can always be found in [codecov](https://codecov.io/gh/ironcalc/IronCalc)\n\nIf you want to run the tests yourself:\n\n```bash\nmake tests\n```\n\nNote that this runs unit tests, integration tests, linter tests and formatting tests.\n\nIf you want to run the code coverage yourself:\n```bash\nmake coverage\ncd target/coverage/html/\npython -m http.server\n```\n\n# API Documentation\n\nDocumentation is published at: https://docs.rs/ironcalc/latest/ironcalc/\n\nIt might be generated locally\n\n```bash\n$ make docs\n$ cd target/doc\n$ python -m http.server\n```\n\nAnd visit \u003chttp://0.0.0.0:8000/ironcalc/\u003e\n\n# Simple example\n\nAdd the dependency to `Cargo.toml`:\n```toml\n[dependencies]\nironcalc = { git = \"https://github.com/ironcalc/IronCalc\", version = \"0.5\"}\n```\n\nAnd then use this code in `main.rs`:\n\n```rust\nuse ironcalc::{\n    base::{expressions::utils::number_to_column, model::Model},\n    export::save_to_xlsx,\n};\n\nfn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    let mut model = Model::new_empty(\"hello-calc.xlsx\", \"en\", \"UTC\")?;\n    // Adds a square of numbers in the first sheet\n    for row in 1..100 {\n        for column in 1..100 {\n            let value = row * column;\n            model.set_user_input(0, row, column, format!(\"{}\", value));\n        }\n    }\n    // Adds a new sheet\n    model.add_sheet(\"Calculation\")?;\n    // column 100 is CV\n    let last_column = number_to_column(100).unwrap();\n    let formula = format!(\"=SUM(Sheet1!A1:{}100)\", last_column);\n    model.set_user_input(1, 1, 1, formula);\n\n    // evaluates\n    model.evaluate();\n\n    // saves to disk\n    save_to_xlsx(\u0026model, \"hello-calc.xlsx\")?;\n    Ok(())\n}\n```\n\nSee more examples in the `examples` folder of the xlsx crate.\n\n# ROADMAP\n\nSee https://github.com/ironcalc\n\n# Early testing\n\nAn early preview of the technology running entirely in your browser:\n\nhttps://app.ironcalc.com\n\n\n# Collaborators needed!. Call to action\n\nWe 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!\n\nThe best place to start will be to join or [discord channel](https://discord.gg/zZYWfh3RHJ) or send us an email at hello@ironcalc.com.\n\nMany have said it better before me:\n\n\u003e Folks wanted for hazardous journey. Low wages, bitter cold, long hours of complete darkness. Safe return doubtful. Honour and recognition in event of success.\n\n\n# License\n\nLicensed under either of\n\n* [MIT license](LICENSE-MIT)\n* [Apache license, version 2.0](LICENSE-Apache-2.0)\n\nat your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fironcalc%2FIronCalc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fironcalc%2FIronCalc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fironcalc%2FIronCalc/lists"}