All Projects → fabiooshiro → xlsx-calc

fabiooshiro / xlsx-calc

Licence: other
javascript nodejs excel formula parser

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
shell
77523 projects

Projects that are alternatives of or similar to xlsx-calc

Documentserver
ONLYOFFICE Document Server is an online office suite comprising viewers and editors for texts, spreadsheets and presentations, fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time.
Stars: ✭ 2,335 (+2713.25%)
Mutual labels:  excel, node-js
Excel2Object
excel convert to .NET Object | Excel与.NET 对象进行转换,支持公式、多Sheet等功能
Stars: ✭ 35 (-57.83%)
Mutual labels:  formula, excel
Documentbuilder
ONLYOFFICE Document Builder is powerful text, spreadsheet, presentation and PDF generating tool
Stars: ✭ 61 (-26.51%)
Mutual labels:  excel, node-js
fast-formula-parser
Parse and evaluate MS Excel formula in javascript.
Stars: ✭ 341 (+310.84%)
Mutual labels:  formula, excel
Formula Parser
Javascript Library parsing Excel Formulas and more
Stars: ✭ 544 (+555.42%)
Mutual labels:  formula, excel
Calx.js
jQuery Calx - a jQuery plugin for creating formula-based calculation form
Stars: ✭ 190 (+128.92%)
Mutual labels:  formula, excel
ToolGood.Algorithm
Support four arithmetic operations, Excel formulas, and support custom parameters. 支持四则运算、Excel公式语法,并支持自定义参数。
Stars: ✭ 77 (-7.23%)
Mutual labels:  formula, excel
Excelize
Golang library for reading and writing Microsoft Excel™ (XLSX) files.
Stars: ✭ 10,286 (+12292.77%)
Mutual labels:  formula, excel
Reogrid
Fast and powerful .NET spreadsheet component, support data format, freeze, outline, formula calculation, chart, script execution and etc. Compatible with Excel 2007 (.xlsx) format and working on .NET 3.5 (or client profile), WPF and Android platform.
Stars: ✭ 532 (+540.96%)
Mutual labels:  formula, excel
Luckysheet
Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source.
Stars: ✭ 9,772 (+11673.49%)
Mutual labels:  formula, excel
spreadsheet
TypeScript/javascript spreadsheet parser, with formulas.
Stars: ✭ 40 (-51.81%)
Mutual labels:  formula, excel
read-excel
This is very simple implementation of the Excel 97-2003 (BIFF8) format written in C++. Supported reading only.
Stars: ✭ 18 (-78.31%)
Mutual labels:  excel
VisualTAF
ExlJS - Super easy to use, Excel and JS driven tool, encapsulating best practices in test automation development.
Stars: ✭ 21 (-74.7%)
Mutual labels:  excel
bingexcel
处理excel与java之间转换的ORM框架
Stars: ✭ 23 (-72.29%)
Mutual labels:  excel
ministun
A zero dependency STUN server
Stars: ✭ 26 (-68.67%)
Mutual labels:  node-js
PruneBot
PruneBot is an easy to use multi-purpose bot and it has a free open source code to setup your own prune bot to your own server.
Stars: ✭ 13 (-84.34%)
Mutual labels:  node-js
spreadsheet
Yii2 extension for export to Excel
Stars: ✭ 79 (-4.82%)
Mutual labels:  excel
vioplot
Development version of vioplot R package (CRAN maintainer)
Stars: ✭ 25 (-69.88%)
Mutual labels:  formula
fn-rate
🌠 Rate the skins of Fortnite and see what skins are most appreciated!
Stars: ✭ 14 (-83.13%)
Mutual labels:  node-js
awesome-georgian-datasets
Useful datasets, specific to Georgia
Stars: ✭ 47 (-43.37%)
Mutual labels:  excel
 _  _  __    ____  _  _     ___   __   __     ___ 
( \/ )(  )  / ___)( \/ )   / __) / _\ (  )   / __)
 )  ( / (_/\\___ \ )  (   ( (__ /    \/ (_/\( (__ 
(_/\_)\____/(____/(_/\_)   \___)\_/\_/\____/ \___)

Installation

With npm:

npm install xlsx-calc

OR

yarn add xlsx-calc

How to use

Read the workbook with the great js-xlsx lib.

var XLSX = require('xlsx');
var workbook = XLSX.readFile('test.xlsx');

// change some cell value
workbook.Sheets['Sheet1'].A1.v = 42;

// recalc the workbook
var XLSX_CALC = require('xlsx-calc');
XLSX_CALC(workbook);

formulajs integration

npm install --save @formulajs/formulajs

var XLSX_CALC = require('xlsx-calc');

// load your calc functions lib
var formulajs = require('@formulajs/formulajs');

// import your calc functions lib
XLSX_CALC.import_functions(formulajs);

var workbook = {Sheets: {Sheet1: {}}};

// use it
workbook.Sheets.Sheet1.A5 = {f: 'BETA.DIST(2, 8, 10, true, 1, 3)'};
XLSX_CALC(workbook);

// see the result -> 0.6854705810117458
console.log(workbook.Sheets.Sheet1.A5.v);

How to contribute

Read the basic-tests.js.

Run tests

$ npm run test-w

Run webpack

$ npm run dev

write some test like:

//(...)
describe('HELLO', function() {
    it('says: Hello, World!', function() {
        workbook.Sheets['Sheet1'].A1.f = 'HELLO("World")';
        XLSX_CALC(workbook);
        assert.equal(workbook.Sheets['Sheet1'].A1.v, "Hello, World!");
    });
});
//(...)

Register your formula/function in the src/formulas.js file below the commentary "FORMULAS REGISTERED"

  // +---------------------+
  // | FORMULAS REGISTERED |
  // +---------------------+
  var formulas = {
    'FLOOR': Math.floor,
    'COUNTA': counta,
    'IRR': irr,
    'HELLO': hello // <---- Your contribution!!
  };

Write the implementation function below the commentary "THE IMPLEMENTATIONS".

// +---------------------+
// | THE IMPLEMENTATIONS |
// +---------------------+
function hello(name) {
  return name;
}

If everything is OK you will see the mocha out:

  1) XLSX_CALC HELLO says: Hello, World!:

      AssertionError: "World" == "Hello, World!"
      + expected - actual

      -World
      +Hello, World!
      
      at Context.<anonymous> (test/basic-test.js:510:20)

So end with the correct implementation:

// +---------------------+
// | THE IMPLEMENTATIONS |
// +---------------------+
function hello(name) {
  return "Hello, " + name + "!";
}

Now in terminal:

  HELLO
    ✓ says: Hello, World!

  79 passing (75ms)

Give me the balloon watermelon!

Create a pull request

Thx!

Contributors

Made with contributors-img.

MIT LICENSE

Copyright 2017, fabiooshiro

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].