Skip to content

The JSS Formula Premium is a JavaScript software to parse and execute spreadsheet-like formulas. It handles ranges, variables, worksheets, and a great number of formulas available in other spreadsheet software such as Excel or Google Spreadsheet.

Notifications You must be signed in to change notification settings

jspreadsheet/formula

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

JSS Formula Premium

The JSS Formula Premium is a JavaScript software to parse and execute spreadsheet-like formulas. It handles ranges, variables, worksheets, and a great number of formulas available in other spreadsheet software such as Excel or Google Spreadsheet. It deals with the JavaScript precision issues and, it is compatible with Jspreadsheet Pro plugins.

This plugin is distributed in two different versions: basic and premium.

Formula Basic Formula Premium
LicenseMITRequired a license
Scopewindowrestricted scope
Parsernew FunctionCustom parser
JavaScript precision issuesNoYes
Date operationsNoYes
Cross worksheets/spreadsheets calculationsNoYes *
Defined namesNoYes **
Matrix calculationsNoYes **
Number of implemented formulas403455

Compatibility

This software can be used stand-alone or integrated with Jspreadsheet CE, BASE, and PRO.

* Only available on stand-alone and with the PRO distributions.
** Only available on stand-alone and with the PRO v8 distributions.


License

This plugin requires a license that should be associated with one specified domain. If you need a license for redistribution or SaaS, please keep in touch with contact@jspreadsheet.com


Precision

JSS Formula Premium tackles the JavaScript numeric precision.

// Activate the precision adjust
formula.adjustPrecision = true;

formula('37.02 + 2.56');
// Without adjustPrecision: 39.580000000000005
// With adjustPrecision: 39.58

formula('185.32 - 84.78');
// Without adjustPrecision: 100.53999999999999
// With adjustPrecision: 100.54

formula('25.92 * 3.33');
// Without adjustPrecision: 86.31360000000001
// With adjustPrecision: 86.3136

formula('9.15 / 6');
// Without adjustPrecision: 1.5250000000000001
// With adjustPrecision: 1.525

NOTE: When this option is enabled, the results will be round in a maximum ten decimal places.


Usage

The formula method receives the expression and the variables that will support the calculations.

@param {string} expression - the formula to be calculated
@param {object} variables - the variables and values necessary to parse the expression
@param {number=} x - a optional coordinate reference
@param {number=} y - a optional coordinate reference

formula(expression: String, variables: Object, [x: Number], [y: Number]) : string|array



Examples

You can run the following tests on the console of the browser when initiation as above.

Range operations

formula('A1:B1*2', { A1: 2, B1: 4 });
// Returns Array[ 4, 8 ]

formula('SUM(A1:B1*2)', { A1: 1, B1: 'A2+B2', A2: 3, B2: 4 }) // Returns 16

formula('SUM(A1:A6)', { A1: 2, A2: 4, A3: 5, A4: 1, A5: 5, A6: 1 }); // Returns 18

formula('AVERAGE(CALCULATION*10)', { CALCULATION: 'A1:A3', A1: 1, A2: 2, A3: 3 }) // Returns 20

formula('SUM(B:B)', { B1: 1, B2: 1, B3: 14 }); // Returns 16

Conditional calculations

formula('IF(B1=0,0,B9/B1)', { B1:0, B9: 3 });
// Returns zero when B1 is zero

formula('IF(true, CALCULATION, 10)', { CALCULATION: 'A1:A3', A1: 1, A2: 2, A3: 3 })
// Returns [[1], [2], [3]]

formula('IF(C16+C15!=0,C13+C14,false)', { C16: 0, C15: 0, C14: 3, C13: 12 })
// Returns false

Comparisions

formula('1*2<1^4');
// Returns false

formula('(1==1)<>(2>2)') // Returns true

Date calculations

formula('NOW()+1');
// Today + one day

formula('DATE(2021,1,1) > DATE(2021,2,1)'); // false

Cross worksheets

formula('SHEET1!A1*A1', { 'SHEET1!A1': 2, 'A1': 3 });
// Returns 6

formula('SUM(SHEET3!B1:B3)', { 'SHEET3!B1': 3, 'SHEET3!B2': 3, 'SHEET3!B3': 4 }); // Returns 10

formula('SUM(B:B)', { 'B1': 1, 'B2': 2, 'B3': 4 }); // Returns 7

Worksheets operations

formula('SHEET1!A1*10', { SHEET1: [[1,2,3],[4,5,6]] });
// Returns 1 * 10

formula('SHEET1!B1*SHEET2!B1', { SHEET1: [[1,2,3],[4,5,6]], SHEET2: [[10,20,30]] }); // Returns 2 * 20


Integrating with Jspreadsheet

How to integrate Jspreadsheet and the formula-pro plugin.

Using CDN

<html>
<script src="https://jspreadsheet.com/v8/jspreadsheet.js"></script>
<script src="https://jsuites.net/v4/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v7/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v4/jsuites.css" type="text/css" />

<script src="https://jspreadsheet.com/v8/plugins/formula-pro.js"></script>

<div id='spreadsheet'></div>

<script>
// License for Formula Plugin
jspreadsheet.license = 'your-license';

// Add-on for Jspreasheet
jspreadsheet.setExtensions({ formula });

// Create the spreadsheets
jspreadsheet(document.getElementById('spreadsheet'), {
    worksheets: [
        { minDimensions: [10, 10] },
        { minDimensions: [10, 10] },
    ],
});
</script>
</html>

Using NPM

// Jspreadsheet Pro
import jspreadsheet from 'jspreadsheet-pro';

// Formula Premium Plugin
import formula from '@jspreadsheet/formula-pro';

// License for Formula Plugin
jspreadsheet.license = 'your-license';

// Add-on for Jspreasheet
jspreadsheet.setExtensions({ formula });

// Create a spreadsheet
jspreadsheet(document.getElementById('spreadsheet'), {
    worksheets: [
        { minDimensions: [10, 10] },
        { minDimensions: [10, 10] },
    ]
});

About

The JSS Formula Premium is a JavaScript software to parse and execute spreadsheet-like formulas. It handles ranges, variables, worksheets, and a great number of formulas available in other spreadsheet software such as Excel or Google Spreadsheet.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published