UNPKG

json.excel

Version:
122 lines (107 loc) 2.37 kB
/* * */ var FIELDS={ WORKSHEETS:'worksheets', NAME:'name', DATA:'data', VALUE:'value', FORMATCODE:'formatCode' }; function kv(keys,data){ var i=0; var len=keys.length; var json={}; for(;i<len;i++){ (function(k,d){ var v=d[FIELDS.VALUE]; v=v === undefined ? '' : v; json[k[FIELDS.VALUE]]=v; })(keys[i],data[i]||{}); } return json; }; function vk(data,type){ var json=[]; //get key if(type === 'key'){ for(var k in data){ var j={}; j[FIELDS.VALUE]=k; json.push(j); } return json; } //get value for(var k in data){ var j={}; j[FIELDS.VALUE]=data[k]; json.push(j); } return json; }; // function excel2json(data){ var keys=data.splice(0,1); var json=[]; var i=0; var len=data.length; for(;i<len;i++){ (function(d){ json.push(kv(keys[0],d)); })(data[i]); } return json; }; // function json2excel(data){ var json=[]; var keys=data.slice(0,1); var i=0; var len=data.length; json.push(vk(keys[0],'key')); //return console.log(json); for(;i<len;i++){ (function(d){ json.push(vk(d)); })(data[i]); } return json; }; //excel to json exports.excel2json=function(jsonstring){ var json={}; var worksheets=jsonstring[FIELDS.WORKSHEETS]||[]; var len=worksheets.length; if(!len){ return {}; } var i=0; for(;i<len;i++){ var worksheet=worksheets[i]; var name=worksheet[FIELDS.NAME]; var data=worksheet[FIELDS.DATA]; if(data.length < 2){ //sheet data more than 2 continue; } json[name]=excel2json(data); } return json; }; //json to excel exports.json2excel=function(jsonstring){ var json={}; json[FIELDS.WORKSHEETS]=[]; for(var sheet in jsonstring){ var data=jsonstring[sheet]||[]; if(data.length < 2){ continue; } var j={}; j[FIELDS.NAME]=sheet; j[FIELDS.DATA]=[].concat(json2excel(data)); json[FIELDS.WORKSHEETS].push(j); } return json; };