|
6 | 6 | </p>
|
7 | 7 |
|
8 | 8 | <p align="center">
|
9 |
| - <strong>A headless spreadsheet • A parser and evaluator of Excel formulas</strong> |
| 9 | + <strong>An open-source headless spreadsheet for business web apps</strong> |
10 | 10 | </p>
|
11 | 11 |
|
12 | 12 | <p align="center">
|
|
22 | 22 |
|
23 | 23 | ---
|
24 | 24 |
|
25 |
| -HyperFormula is a headless spreadsheet built on top of TypeScript. It is a parser and evaluator of Excel formulas for web applications. You can use it in a browser or as a service, with Node.js as your back-end technology. |
26 |
| -- High-speed Excel formula parsing and evaluating |
27 |
| -- A library of nearly [400 built-in functions](https://hyperformula.handsontable.com/guide/built-in-functions.html) |
28 |
| -- Support for [internationalization](https://hyperformula.handsontable.com/guide/i18n-features.html) with 17 built-in languages |
29 |
| -- Support for [custom functions](https://hyperformula.handsontable.com/guide/custom-functions.html) |
30 |
| -- 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) |
| 25 | +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. |
| 26 | + |
| 27 | +## What HyperFormula can be used for? |
| 28 | +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: |
| 29 | + |
| 30 | +- Custom spreadsheet-like app |
| 31 | +- Business logic builder |
| 32 | +- Forms and form builder |
| 33 | +- Educational app |
| 34 | +- Online calculator |
| 35 | + |
| 36 | +## Features |
| 37 | + |
| 38 | +- [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) |
| 39 | +- High-speed parsing and evaluation of spreadsheet formulas |
| 40 | +- [A library of ~400 built-in functions](https://hyperformula.handsontable.com/guide/built-in-functions.html) |
| 41 | +- [Support for custom functions](https://hyperformula.handsontable.com/guide/custom-functions.html) |
31 | 42 | - [Support for Node.js](https://hyperformula.handsontable.com/guide/server-side-installation.html#install-with-npm-or-yarn)
|
32 |
| -- Support for [undo/redo](https://hyperformula.handsontable.com/guide/undo-redo.html) |
33 |
| -- Support for [CRUD operations](https://hyperformula.handsontable.com/guide/basic-operations.html) |
34 |
| -- Support for [clipboard](https://hyperformula.handsontable.com/guide/clipboard-operations.html) |
35 |
| -- Support for [named expressions](https://hyperformula.handsontable.com/guide/named-expressions.html) |
36 |
| -- Support for [data sorting](https://hyperformula.handsontable.com/guide/sorting-data.html) |
37 |
| -- Support for [React](https://hyperformula.handsontable.com/guide/integration-with-react.html), [Angular](https://hyperformula.handsontable.com/guide/integration-with-angular.html), and [Vue.js](https://hyperformula.handsontable.com/guide/integration-with-vue.html) |
38 |
| -- Open-source license |
39 |
| -- Actively maintained by the team that stands behind [Handsontable - JavaScript Data Grid](https://handsontable.com/) |
| 43 | +- [Support for undo/redo](https://hyperformula.handsontable.com/guide/undo-redo.html) |
| 44 | +- [Support for CRUD operations](https://hyperformula.handsontable.com/guide/basic-operations.html) |
| 45 | +- [Support for clipboard](https://hyperformula.handsontable.com/guide/clipboard-operations.html) |
| 46 | +- [Support for named expressions](https://hyperformula.handsontable.com/guide/named-expressions.html) |
| 47 | +- [Support for data sorting](https://hyperformula.handsontable.com/guide/sorting-data.html) |
| 48 | +- [Support for formula localization with 17 built-in languages](https://hyperformula.handsontable.com/guide/i18n-features.html) |
| 49 | +- GPLv3 license |
| 50 | +- Maintained by the team that stands behind the [Handsontable](https://handsontable.com/) data grid |
40 | 51 |
|
41 | 52 | ## Documentation
|
42 | 53 |
|
43 |
| -- [Explainer video](https://www.youtube.com/watch?v=JJXUmACTDdk) |
44 |
| -- [Installation](https://hyperformula.handsontable.com/guide/client-side-installation.html) |
| 54 | +- [Client-side installation](https://hyperformula.handsontable.com/guide/client-side-installation.html) |
| 55 | +- [Server-side installation](https://hyperformula.handsontable.com/guide/server-side-installation.html) |
45 | 56 | - [Basic usage](https://hyperformula.handsontable.com/guide/basic-usage.html)
|
46 |
| - - [Demo with React](https://hyperformula.handsontable.com/guide/integration-with-react.html) |
47 |
| - - [Demo with Angular](https://hyperformula.handsontable.com/guide/integration-with-angular.html) |
48 |
| - - [Demo with Vue.js](https://hyperformula.handsontable.com/guide/integration-with-vue.html) |
49 |
| -- [API Reference](https://hyperformula.handsontable.com/api/) |
50 | 57 | - [Configuration options](https://hyperformula.handsontable.com/guide/configuration-options.html)
|
51 | 58 | - [List of built-in functions](https://hyperformula.handsontable.com/guide/built-in-functions.html)
|
52 |
| -- [Key concepts](https://hyperformula.handsontable.com/guide/key-concepts.html) |
| 59 | +- [API Reference](https://hyperformula.handsontable.com/api/) |
| 60 | + |
| 61 | +## Integrations |
| 62 | + |
| 63 | +- [Integration with React](https://hyperformula.handsontable.com/guide/integration-with-react.html#demo) |
| 64 | +- [Integration with Angular](https://hyperformula.handsontable.com/guide/integration-with-angular.html#demo) |
| 65 | +- [Integration with Vue](https://hyperformula.handsontable.com/guide/integration-with-vue.html#demo) |
| 66 | +- [Integration with Svelte](https://hyperformula.handsontable.com/guide/integration-with-svelte.html#demo) |
53 | 67 |
|
54 | 68 | ## Installation and usage
|
55 | 69 |
|
56 |
| -Install the library from [npm](https://www.npmjs.com/package/hyperformula): |
| 70 | +Install the library from [npm](https://www.npmjs.com/package/hyperformula) like so: |
57 | 71 |
|
58 | 72 | ```bash
|
59 | 73 | npm install hyperformula
|
60 | 74 | ```
|
61 | 75 |
|
62 |
| -Once installed, you can use it like this: |
| 76 | +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. |
63 | 77 |
|
64 | 78 | ```js
|
65 | 79 | import { HyperFormula } from 'hyperformula';
|
66 | 80 |
|
67 |
| -// define the options |
68 |
| -const options = { |
69 |
| - licenseKey: 'gpl-v3', |
70 |
| -}; |
| 81 | +// Create a HyperFormula instance |
| 82 | +const hf = HyperFormula.buildEmpty({ licenseKey: 'gpl-v3' }); |
71 | 83 |
|
72 |
| -// define the data |
73 |
| -const data = [['10', '20', '30', '=SUM(A1:C1)']]; |
| 84 | +// Add an empty sheet |
| 85 | +const sheetName = hf.addSheet('Mortgage Calculator'); |
| 86 | +const sheetId = hf.getSheetId(sheetName); |
74 | 87 |
|
75 |
| -// build an instance with defined options and data |
76 |
| -const hfInstance = HyperFormula.buildFromArray(data, options); |
| 88 | +// Enter the mortgage parameters |
| 89 | +hf.addNamedExpression('AnnualInterestRate', '8%'); |
| 90 | +hf.addNamedExpression('NumberOfMonths', 360); |
| 91 | +hf.addNamedExpression('LoanAmount', 800000); |
77 | 92 |
|
78 |
| -// call getCellValue to get the calculation results |
79 |
| -const mySum = hfInstance.getCellValue({ col: 3, row: 0, sheet: 0 }); |
| 93 | +// Use the PMT function to calculate the monthly payment |
| 94 | +hf.setCellContents({ sheet: sheetId, row: 0, col: 0 }, [['Monthly Payment', '=PMT(AnnualInterestRate/12, NumberOfMonths, -LoanAmount)']]); |
80 | 95 |
|
81 |
| -// print the result in the browser's console |
82 |
| -console.log(mySum); |
| 96 | +// Display the result |
| 97 | +console.log(`${hf.getCellValue({ sheet: sheetId, row: 0, col: 0 })}: ${hf.getCellValue({ sheet: sheetId, row: 0, col: 1 })}`); |
83 | 98 | ```
|
84 | 99 |
|
85 |
| -[Run this code in CodeSandbox](https://codesandbox.io/s/github/handsontable/hyperformula-demos/tree/develop/basic-usage) |
86 |
| - |
87 |
| -## What can it be used for? |
88 |
| - |
89 |
| -HyperFormula doesn't assume any existing user interface, making it a great general-purpose library that can be used in various business applications. Here are some examples: |
90 |
| - |
91 |
| -- Spreadsheets |
92 |
| -- Business logic builders |
93 |
| -- Forms and form builders |
94 |
| -- Computation notebooks |
95 |
| -- Smart documents |
96 |
| -- Educational apps |
97 |
| -- Online calculators |
| 100 | +[Run this code in CodeSandbox](https://codesandbox.io/p/sandbox/github/handsontable/hyperformula-demos/tree/2.7.x/mortgage-calculator) |
98 | 101 |
|
99 | 102 | ## Contributing
|
100 | 103 |
|
101 |
| -Help us build the fastest and most flexible calculation engine for |
102 |
| -business web apps. Please read the [Contributing Guide](https://hyperformula.handsontable.com/guide/contributing.html) before making a pull request. |
| 104 | +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). |
103 | 105 |
|
104 | 106 | ## License
|
105 | 107 |
|
106 |
| -HyperFormula is available under the open source license ([GPLv3](https://github.com/handsontable/hyperformula/blob/master/LICENSE.txt)). |
107 |
| - |
108 |
| -To buy a commercial license, please write to us at sales@handsontable.com |
| 108 | +HyperFormula is available under two different licenses: GPLv3 and commercial. The commercial license can be purchased by [contacting our team](https://handsontable.com/get-a-quote) at Handsontable. |
109 | 109 |
|
110 |
| -## Copyrights |
111 |
| -© 2023 [Handsoncode](https://handsontable.com) |
| 110 | +Copyright (c) Handsoncode |
0 commit comments