xlsx-parse-json

Parse csv, xls, xlsx into json

Usage no npm install needed!

<script type="module">
  import xlsxParseJson from 'https://cdn.skypack.dev/xlsx-parse-json';
</script>

README

xlsx-parse-json

Description

Parse csv, xls, xlsx into json. Having multiple sheets is not an issue we return and object for each sheet found. See example below for more info. Visit https://abelalvarez.info/xlsx-parse-json/ to test it online.

Install

npm install xlsx-parse-json

Web Usage

To use this library you need to have already the file uploaded, there are many libraries out there to select a file from your system. In the example below I provided an HTML(bootstrap) snippet and a JS snippet, of the components you need to have. Example

import xlsxParser from 'xlsx-parse-json';

xlsxParser
  .onFileSelection(file)
  .then(data => {
    var parsedData = data;
  });

<html>
...
<form>
  <div class="form-group">
    <label for="exampleFormControlFile1">Example file input</label>
    <input type="file" class="form-control-file" id="exampleFormControlFile1">
  </div>
</form>
...
</html>

Example using AngularJS Install

npm install ng-file-upload
npm install xlsx-parse-json

index.js

'use strict';

var angular = require('angular');

require('ng-file-upload');

angular.module('test-xls-parser', ['ngFileUpload'])
.component('testXlsParserUpload', {
    template: '<input type="file" ngf-select="vm.uploadFile($file)" ng-disabled="vm.disableUpload" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"/><pre>{{vm.data | json}}</pre>',
    controller: function() {
        var vm = this;
        var xlsxParser = require('xlsx-parse-json');

        vm.uploadFile = function(file){
            xlsxParser.onFileSelection(file)
            .then((data) => {
                vm.data = data;
            });
        }
    },
    controllerAs: 'vm'
});

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>XLS-Parser</title>
</head>
<body ng-app="test-xls-parser">
    <test-xls-parser-upload>loading</test-xls-parser-upload>
    
    <script src="bundle.min.js"></script>
</body>
</html>

input file

Test (sheet name)

Price |  Name
-----------------
4     |   a
8     |   b
9     |   c
4     |

Sheet1 (sheet name)

Name	| Lastname	| Age
-------------------------
Nico	| Jhones		| 69
Carl	|       		| 4
Abel	|       		| 30
Gabe	|       		|

output sample

{
  "Test": [
    {
      "Price": 4,
      "Name": "a"
    },
    {
      "Price": 8,
      "Name": "b"
    },
    {
      "Price": 9,
      "Name": "c"
    },
    {
      "Price": 4
    }
  ],
  "Sheet1": [
    {
      "Name": "Nico",
      "Lastname": "Jhones",
      "Age": 69
    },
    {
      "Name": "Carl",
      "Age": 4
    },
    {
      "Name": "Abel",
      "Age": 55
    },
    {
      "Name": "Gabe"
    }
  ]
}

Optional Parameters

There are optional parameters to show. They should be provided in the second argument

The default values are { showNullProperties = false, hideEmptyRows = true }
onFileSelection = (file, { showNullProperties = false, hideEmptyRows = true })

Setting showNullProperties = true; will show all properties on every object example

input file

Test (sheet name)

Price |  Name
-----------------
4     |   a
8     |   b
      |   c
4     |

output sample

{
  "Test": [
    {
      "Price": 4,
      "Name": "a"
    },
    {
      "Price": 8,
      "Name": "b"
    },
    {
      "Price": null,
      "Name": "c"
    },
    {
      "Price": 4
      "Name": null
    }
  ]
}

Setting { showNullProperties = true hideEmptyRows = false } will show all properties on every object example including empty rows with null values

input file

Test (sheet name)

Price |  Name
-----------------
4     |   a
8     |   b
      |
      |   c
4     |

output sample

{
  "Test": [
    {
      "Price": 4,
      "Name": "a"
    },
    {
      "Price": 8,
      "Name": "b"
    },
    {
      "Price": null,
      "Name": null
    },
    {
      "Price": null,
      "Name": "c"
    },
    {
      "Price": 4
      "Name": null
    }
  ]
}