alphascript-server
Version:
CRUD operations for mongo and other functionalities to get started quickly in any CMS project
56 lines (46 loc) • 1.11 kB
JavaScript
var fs = require('fs');
var xlsx = require('node-xlsx');
module.exports = {
fromJson: function (data) {
var sheets = data.sheets.map(function (datum) {
return getSheet(datum);
});
return xlsx.build(sheets);
}
};
function getSheet(data) {
var keys = [];
var sheet = [];
//header
if (data.header) {
var headerData = getHeaderRow(data.header);
keys = headerData.keys;
sheet.unshift(headerData.values);
}
//data
sheet = sheet.concat(data.items.map(function (item) {
return keys.map(function (key) {
return getField(item, key);
});
}));
return { data: sheet, name: data.sheetName };
}
function getHeaderRow(header) {
var keys = [],
values = [];
for (var key in header) {
keys.push(key);
values.push(header[key]);
}
return { keys: keys, values: values };
}
function getField(item, key) {
if (typeof item === 'undefined') return;
var parts = key.split('.');
if (parts.length > 1) {
item = item[parts[0]];
key = key.substring(parts[0].length + 1);
return getField(item, key);
}
return item[key];
}