{"id":19075339,"url":"https://github.com/gershnik/spreader","last_synced_at":"2025-06-16T16:09:23.913Z","repository":{"id":185787018,"uuid":"618393443","full_name":"gershnik/spreader","owner":"gershnik","description":"A fast, portable spreadsheet logic library","archived":false,"fork":false,"pushed_at":"2023-08-04T01:56:15.000Z","size":331,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-22T04:42:41.166Z","etag":null,"topics":["cplusplus","cpp","cpp20","spreadsheet","spreadsheet-data","spreadsheet-manipulation"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gershnik.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2023-03-24T11:22:28.000Z","updated_at":"2024-07-24T15:32:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"7abc0d23-fea7-42bc-b547-b67532c73498","html_url":"https://github.com/gershnik/spreader","commit_stats":null,"previous_names":["gershnik/spreader"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gershnik/spreader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gershnik%2Fspreader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gershnik%2Fspreader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gershnik%2Fspreader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gershnik%2Fspreader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gershnik","download_url":"https://codeload.github.com/gershnik/spreader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gershnik%2Fspreader/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260194147,"owners_count":22972633,"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":["cplusplus","cpp","cpp20","spreadsheet","spreadsheet-data","spreadsheet-manipulation"],"created_at":"2024-11-09T01:54:26.535Z","updated_at":"2025-06-16T16:09:23.876Z","avatar_url":"https://github.com/gershnik.png","language":"C++","readme":"# Spreader\n\nA fast, portable spreadsheet logic library\n\n[![Language](https://img.shields.io/badge/language-C++-blue.svg)](https://isocpp.org/)\n[![Standard](https://img.shields.io/badge/C%2B%2B-20-blue.svg)](https://en.wikipedia.org/wiki/C%2B%2B#Standardization)\n[![License](https://img.shields.io/badge/license-BSD-brightgreen.svg)](https://opensource.org/licenses/BSD-3-Clause)\n\n\nSpreader is a portable C++ library that implements spreadsheet logic - reading and writing data and formulas into cells, automatic recalculation, copying and moving cells, adding and deleting rows and columns and so on. It does not implement any spreadsheet UI,\nthough the hope is that eventually it will be possible to write a UI based on it. \nIt is currently in alpha stage.\n\nWrapper libraries in JavaScript and Python are available at [spreader.js](https://github.com/gershnik/spreader.js) and \n[spreader.py](https://github.com/gershnik/spreader.py) respectively.\n\n## Build\n\nYou will need CMake 3.24 or better as well as C++ compiler that supports C++20. The following compilers are known to work\n- GCC 11.3 or above\n- Xcode 14 or above \n- Visual Studio 2022 or above \n\nTo get the library as a dependency:\n\n```cmake\ninclude(FetchContent)\nFetchContent_Declare(spreader\n    GIT_REPOSITORY git@github.com:gershnik/spreader.git\n    GIT_TAG        \u003cdesired tag like v1.2 or commit sha\u003e\n    GIT_SHALLOW    TRUE\n)\nFetchContent_MakeAvailable(spreader)\n```\n\nIf you have Bison 3.8 or better and/or Flex 2.6 or better available on your machine CMake build will use them to generate code \nfor formula parser. Otherwise it will use pre-built files.\n\n## Quick start\n\n```cpp\n\n#include \u003cspreader/sheet.h\u003e\n\nusing namespace Spreader;\n\n//Create a new sheet\nauto sheet = Sheet();\n//Set A2 cell to contain plain value. \nsheet.setValueCell(Point{.x=0, .y=1}, \"Hello \");\n//You can also use regular cell notation. \n//The result of parsePoint is std::optional\u003cPoint\u003e\nsheet.setValueCell(sheet.parsePoint(\"B3\").value(), \"World!\");\n//Set a cell to contain formula\nsheet.setFormulaCell(Point{.x=0, .y=0}, \"A2 \u0026 B3\");\n//Read calculated formula result\nauto val = s.getValue(Point{.x=0, .y=0});\n//prints \"Hello Wolrd!\" \nstd::cout \u003c\u003c val;\n```\n\n\n\n\n\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgershnik%2Fspreader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgershnik%2Fspreader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgershnik%2Fspreader/lists"}