csv-excel-to-json
Version:
NPM Module to convert csv, excel to json format
88 lines (69 loc) • 2.57 kB
JavaScript
;
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);
}
});
}
}