/
index_controller.js
56 lines (47 loc) · 1.81 KB
/
index_controller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const Promise = require('bluebird');
const {merge, bulkMergeToFiles, bulkMergeToSheets} = require('js-merge-xlsx');
const JSZip = require('jszip');
const _ = require('underscore');
module.exports = ($scope, $http) => {
$scope.merge = () => {
Promise.props({
template: $http.get('/template/Template.xlsx', {responseType: 'arraybuffer'}),
data: $http.get('/data/data1.json')
}).then(({template, data}) => {
//FileSaver#saveAs()
saveAs(merge(template, data), 'example.xlsx');
}).catch((err) => {
console.log(err);
});
};
$scope.bulkMergeToFiles = () => {
Promise.props({
template: $http.get('/template/Template.xlsx', {responseType: 'arraybuffer'}),
data: $http.get('/data/data2.json')
}).then(({template, data}) => {
data = _.map(data.data, (e,index) => {
return {name: `file${(index+1)}.xlsx`, data: e};
});
//FileSaver#saveAs()
saveAs(bulkMergeToFiles(template, data), 'example.zip');
}).catch((err) => {
console.log(err);
});
};
$scope.bulkMergeToSheets = ()=>{
Promise.props({
template: $http.get('/template/Template.xlsx', {responseType: 'arraybuffer'}),
data: $http.get('/data/data2.json')
}).then(({template, data}) => {
data = _.map(data.data, (e,index) => {
return {name: `sample${(index+1)}`, data: e};
});
//bulkMergeToSheets() is called asyc by returning Promise(bluebird) instance.
return bulkMergeToSheets(template, data);
}).then((excel) => {
saveAs(excel,'example.xlsx');
}).catch((err) => {
console.log(err);
});
};
};