|
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