How to parse Excel (XLS) file in Javascript/HTML5 How to parse Excel (XLS) file in Javascript/HTML5 javascript javascript

How to parse Excel (XLS) file in Javascript/HTML5


Below Function converts the Excel sheet (XLSX format) data to JSON. you can add promise to the function.

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script><script>var ExcelToJSON = function() {  this.parseExcel = function(file) {    var reader = new FileReader();    reader.onload = function(e) {      var data = e.target.result;      var workbook = XLSX.read(data, {        type: 'binary'      });      workbook.SheetNames.forEach(function(sheetName) {        // Here is your object        var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);        var json_object = JSON.stringify(XL_row_object);        console.log(json_object);      })    };    reader.onerror = function(ex) {      console.log(ex);    };    reader.readAsBinaryString(file);  };};</script>

Below post has the code for XLS format Excel to JSON javascript code?


Old question, but I should note that the general task of parsing XLS files from javascript is tedious and difficult but not impossible.

I have basic parsers implemented in pure JS:

Both pages are HTML5 File API-driven XLS/XLSX parsers (you can drag-drop your file and it will print out the data in the cells in a comma-separated list). You can also generate JSON objects (assuming the first row is a header row).

The test suite http://oss.sheetjs.com/ shows a version that uses XHR to get and parse files.


Upload an excel file here and you can get the data in JSON format in console:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script><script>    var ExcelToJSON = function() {      this.parseExcel = function(file) {        var reader = new FileReader();        reader.onload = function(e) {          var data = e.target.result;          var workbook = XLSX.read(data, {            type: 'binary'          });          workbook.SheetNames.forEach(function(sheetName) {            // Here is your object            var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);            var json_object = JSON.stringify(XL_row_object);            console.log(JSON.parse(json_object));            jQuery( '#xlx_json' ).val( json_object );          })        };        reader.onerror = function(ex) {          console.log(ex);        };        reader.readAsBinaryString(file);      };  };  function handleFileSelect(evt) {        var files = evt.target.files; // FileList object    var xl2json = new ExcelToJSON();    xl2json.parseExcel(files[0]);  } </script><form enctype="multipart/form-data">    <input id="upload" type=file  name="files[]"></form>    <textarea class="form-control" rows=35 cols=120 id="xlx_json"></textarea>    <script>        document.getElementById('upload').addEventListener('change', handleFileSelect, false);    </script>