UNPKG

csv-excel-to-json

Version:

NPM Module to convert csv, excel to json format

88 lines (69 loc) 2.57 kB
'use strict'; exports.convertToJson = function(input, output, config) { var defaultConfig = { delimiter: ',', ignoreEmpty: true, sheetNumber: 0 // In case of Excel file }; if(typeof config == 'undefined') config = {} Object.assign(config,defaultConfig); var headArray = []; var masterArray = []; var fs = require('fs'); var path = require('path'); if(path.extname(input) == ".csv"){ var readline = require('readline'); var rd = readline.createInterface({ input: fs.createReadStream(input), }); var countLine = 0; rd.on('line', function(line) { countLine++; if(countLine == 1){ headArray = line.split(config.delimiter); //console.log(headArray); return; } var single = {}; //For Rest of the rows. if(config.ignoreEmpty && line == '') return; var rowArray = line.split(config.delimiter); for (var i = 0; i < headArray.length; i++) single[headArray[i]] = rowArray[i]; //console.log(single); masterArray.push(single); }); rd.on('close', function(line) { fs.writeFile(output, JSON.stringify(masterArray), function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); }); }else if(path.extname(input) == ".xls" || path.extname(input) == ".xlsx"){ var xlsx = require('node-xlsx'); var excelFile = xlsx.parse(input); // parses a file var sheet = excelFile[config.sheetNumber]; //Header - For Indexes headArray = sheet['data'][0]; //loop through all rows in selected sheet. for(var i = 1; i < sheet['data'].length; i++) { //add the row to the masterArray array if(config.ignoreEmpty && sheet['data'][i].length == 0) continue; var single = {}; for (var j = 0; j < headArray.length; j++) single[headArray[j]] = sheet['data'][i][j]; masterArray.push(single); } fs.writeFile(output, JSON.stringify(masterArray), function(err) { if(err) { return console.log(err); } }); } }