Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/handsontable/hyperformula
HyperFormula is an open-source headless spreadsheet for business web apps. It comes with over 400 formulas, CRUD operations, undo-redo, clipboard support, and sorting. Built in TypeScript, supported by the Handsontable Team.
https://github.com/handsontable/hyperformula
calculation-engine evaluator excel forms formula headless-spreadsheet sheets spreadsheet typescript xls xlsx
Last synced: 30 days ago
JSON representation
HyperFormula is an open-source headless spreadsheet for business web apps. It comes with over 400 formulas, CRUD operations, undo-redo, clipboard support, and sorting. Built in TypeScript, supported by the Handsontable Team.
- Host: GitHub
- URL: https://github.com/handsontable/hyperformula
- Owner: handsontable
- License: gpl-3.0
- Created: 2019-09-10T08:02:18.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-04-10T14:38:21.000Z (7 months ago)
- Last Synced: 2024-04-14T11:53:47.982Z (7 months ago)
- Topics: calculation-engine, evaluator, excel, forms, formula, headless-spreadsheet, sheets, spreadsheet, typescript, xls, xlsx
- Language: TypeScript
- Homepage: https://hyperformula.handsontable.com/
- Size: 73.2 MB
- Stars: 1,745
- Watchers: 26
- Forks: 103
- Open Issues: 129
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
An open-source headless spreadsheet for business web apps---
HyperFormula is a headless spreadsheet built in TypeScript, serving as both a parser and evaluator of spreadsheet formulas. It can be integrated into your browser or utilized as a service with Node.js as your back-end technology.
## What HyperFormula can be used for?
HyperFormula doesn't assume any existing user interface, making it a general-purpose library that can be used in various business applications. Here are some examples:- Custom spreadsheet-like app
- Business logic builder
- Forms and form builder
- Educational app
- Online calculator## Features
- [Function syntax compatible with Microsoft Excel](https://hyperformula.handsontable.com/guide/compatibility-with-microsoft-excel.html) and [Google Sheets](https://hyperformula.handsontable.com/guide/compatibility-with-google-sheets.html)
- High-speed parsing and evaluation of spreadsheet formulas
- [A library of ~400 built-in functions](https://hyperformula.handsontable.com/guide/built-in-functions.html)
- [Support for custom functions](https://hyperformula.handsontable.com/guide/custom-functions.html)
- [Support for Node.js](https://hyperformula.handsontable.com/guide/server-side-installation.html#install-with-npm-or-yarn)
- [Support for undo/redo](https://hyperformula.handsontable.com/guide/undo-redo.html)
- [Support for CRUD operations](https://hyperformula.handsontable.com/guide/basic-operations.html)
- [Support for clipboard](https://hyperformula.handsontable.com/guide/clipboard-operations.html)
- [Support for named expressions](https://hyperformula.handsontable.com/guide/named-expressions.html)
- [Support for data sorting](https://hyperformula.handsontable.com/guide/sorting-data.html)
- [Support for formula localization with 17 built-in languages](https://hyperformula.handsontable.com/guide/i18n-features.html)
- GPLv3 license
- Maintained by the team that stands behind the [Handsontable](https://handsontable.com/) data grid## Documentation
- [Client-side installation](https://hyperformula.handsontable.com/guide/client-side-installation.html)
- [Server-side installation](https://hyperformula.handsontable.com/guide/server-side-installation.html)
- [Basic usage](https://hyperformula.handsontable.com/guide/basic-usage.html)
- [Configuration options](https://hyperformula.handsontable.com/guide/configuration-options.html)
- [List of built-in functions](https://hyperformula.handsontable.com/guide/built-in-functions.html)
- [API Reference](https://hyperformula.handsontable.com/api/)## Integrations
- [Integration with React](https://hyperformula.handsontable.com/guide/integration-with-react.html#demo)
- [Integration with Angular](https://hyperformula.handsontable.com/guide/integration-with-angular.html#demo)
- [Integration with Vue](https://hyperformula.handsontable.com/guide/integration-with-vue.html#demo)
- [Integration with Svelte](https://hyperformula.handsontable.com/guide/integration-with-svelte.html#demo)## Installation and usage
Install the library from [npm](https://www.npmjs.com/package/hyperformula) like so:
```bash
npm install hyperformula
```Once installed, you can use it to develop applications tailored to your specific business needs. Here, we've used it to craft a form that calculates mortgage payments using the `PMT` formula.
```js
import { HyperFormula } from 'hyperformula';// Create a HyperFormula instance
const hf = HyperFormula.buildEmpty({ licenseKey: 'gpl-v3' });// Add an empty sheet
const sheetName = hf.addSheet('Mortgage Calculator');
const sheetId = hf.getSheetId(sheetName);// Enter the mortgage parameters
hf.addNamedExpression('AnnualInterestRate', '8%');
hf.addNamedExpression('NumberOfMonths', 360);
hf.addNamedExpression('LoanAmount', 800000);// Use the PMT function to calculate the monthly payment
hf.setCellContents({ sheet: sheetId, row: 0, col: 0 }, [['Monthly Payment', '=PMT(AnnualInterestRate/12, NumberOfMonths, -LoanAmount)']]);// Display the result
console.log(`${hf.getCellValue({ sheet: sheetId, row: 0, col: 0 })}: ${hf.getCellValue({ sheet: sheetId, row: 0, col: 1 })}`);
```[Run this code in CodeSandbox](https://codesandbox.io/p/sandbox/github/handsontable/hyperformula-demos/tree/2.7.x/mortgage-calculator)
## Contributing
Contributions are welcome, but before you make them, please read the [Contributing Guide](https://hyperformula.handsontable.com/guide/contributing.html) and accept the [Contributor License Agreement](https://goo.gl/forms/yuutGuN0RjsikVpM2).
## License
HyperFormula is available under two different licenses: GPLv3 and proprietary. The proprietary license can be purchased by [contacting our team](https://handsontable.com/get-a-quote) at Handsontable.
Copyright (c) Handsoncode