@gatekeeper_technology/excel-utils 1.0.10 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -22
- package/index.js +6 -6
- package/package.json +28 -27
- package/utils.js +31 -31
- package/workbook_creator.js +164 -167
package/README.md
CHANGED
|
@@ -1,22 +1,47 @@
|
|
|
1
|
-
# Gatekeeper's Excel Utils
|
|
2
|
-
|
|
3
|
-
## Changelog
|
|
4
|
-
|
|
5
|
-
###
|
|
6
|
-
|
|
7
|
-
###
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
###
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
###
|
|
19
|
-
|
|
20
|
-
###
|
|
21
|
-
|
|
22
|
-
-
|
|
1
|
+
# Gatekeeper's Excel Utils
|
|
2
|
+
|
|
3
|
+
## Changelog
|
|
4
|
+
|
|
5
|
+
### [1.0.11] 17-04-2025
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Changed the way the workbook_creator class gets exported.
|
|
10
|
+
- Removed 'date1904' property from the workbook_creator class.
|
|
11
|
+
|
|
12
|
+
### [1.00.10] 24-08-2022
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Bug with loadDataIntoWorksheetWithRowOffset function which did not load data correctly.
|
|
17
|
+
|
|
18
|
+
### [1.00.09] 24-08-2022
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- Ability to load data into worksheet with row offset.
|
|
23
|
+
|
|
24
|
+
### [1.00.08] 24-08-2022
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- Ability to get worksheet by name.
|
|
29
|
+
- Ability to get worksheet by index.
|
|
30
|
+
|
|
31
|
+
### [1.00.07] 24-08-2022
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- Fixed bug where workbook_creator class was not exported properly.
|
|
36
|
+
|
|
37
|
+
### [1.00.05] 18-03-2022
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- Fixed import bug
|
|
42
|
+
|
|
43
|
+
### [1.00.04] 18-03-2022
|
|
44
|
+
|
|
45
|
+
#### Changed
|
|
46
|
+
|
|
47
|
+
- Moved the functions and WorkbookCreator Class each to their own folder.
|
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const workbookCreator = require("./workbook_creator.js");
|
|
2
|
-
const utils = require("./utils.js");
|
|
3
|
-
|
|
4
|
-
module.exports = {
|
|
5
|
-
utils,
|
|
6
|
-
workbookCreator
|
|
1
|
+
const workbookCreator = require("./workbook_creator.js");
|
|
2
|
+
const utils = require("./utils.js");
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
utils,
|
|
6
|
+
workbookCreator
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@gatekeeper_technology/excel-utils",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Gatekeeper's excel Utils - shared in NPM",
|
|
5
|
-
"author": "David Holtzhausen",
|
|
6
|
-
"main": "index.js",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/gatekeeper-technology/excel-utils.git"
|
|
10
|
-
},
|
|
11
|
-
"keywords": [
|
|
12
|
-
"excel",
|
|
13
|
-
"util",
|
|
14
|
-
"gatekeeper"
|
|
15
|
-
],
|
|
16
|
-
"bugs": {
|
|
17
|
-
"url": "https://github.com/gatekeeper-technology/excel-utils/issues"
|
|
18
|
-
},
|
|
19
|
-
"homepage": "https://github.com/gatekeeper-technology/excel-utils#readme",
|
|
20
|
-
"scripts": {
|
|
21
|
-
"test": "echo \"Error: no test specified\" && exit 1"
|
|
22
|
-
},
|
|
23
|
-
"license": "ISC",
|
|
24
|
-
"dependencies": {
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@gatekeeper_technology/excel-utils",
|
|
3
|
+
"version": "1.0.11",
|
|
4
|
+
"description": "Gatekeeper's excel Utils - shared in NPM",
|
|
5
|
+
"author": "David Holtzhausen",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/gatekeeper-technology/excel-utils.git"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"excel",
|
|
13
|
+
"util",
|
|
14
|
+
"gatekeeper"
|
|
15
|
+
],
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/gatekeeper-technology/excel-utils/issues"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/gatekeeper-technology/excel-utils#readme",
|
|
20
|
+
"scripts": {
|
|
21
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
22
|
+
},
|
|
23
|
+
"license": "ISC",
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@gatekeeper_technology/excel-utils": "file:",
|
|
26
|
+
"exceljs": "^4.3.0"
|
|
27
|
+
}
|
|
28
|
+
}
|
package/utils.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
const WorkbookCreator = require("./workbook_creator.js");
|
|
2
|
-
|
|
3
|
-
async function generateXLSXBuffer(data, sheet_name) {
|
|
4
|
-
const workbook_creator = new WorkbookCreator();
|
|
5
|
-
let _workbook = workbook_creator.createWorkbook();
|
|
6
|
-
let _worksheet = workbook_creator.createWorksheet(_workbook, sheet_name);
|
|
7
|
-
workbook_creator.loadDataIntoWorksheet(_worksheet, data);
|
|
8
|
-
const _array_buffer = (await workbook_creator.getXLSXWorkbookBuffer(_workbook));
|
|
9
|
-
return _array_buffer;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Returns an array of all
|
|
14
|
-
*/
|
|
15
|
-
async function getWorkbookData(data) {
|
|
16
|
-
const workbook_creator = new WorkbookCreator();
|
|
17
|
-
let _workbook = await workbook_creator.loadXLSX(data);
|
|
18
|
-
let _worksheet = _workbook.worksheets[0];
|
|
19
|
-
|
|
20
|
-
let rows_data = [];
|
|
21
|
-
_worksheet.eachRow((row) => {
|
|
22
|
-
rows_data.push(row.values);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
return rows_data;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
module.exports = {
|
|
29
|
-
generateXLSXBuffer,
|
|
30
|
-
getWorkbookData
|
|
31
|
-
}
|
|
1
|
+
const WorkbookCreator = require("./workbook_creator.js");
|
|
2
|
+
|
|
3
|
+
async function generateXLSXBuffer(data, sheet_name) {
|
|
4
|
+
const workbook_creator = new WorkbookCreator();
|
|
5
|
+
let _workbook = workbook_creator.createWorkbook();
|
|
6
|
+
let _worksheet = workbook_creator.createWorksheet(_workbook, sheet_name);
|
|
7
|
+
workbook_creator.loadDataIntoWorksheet(_worksheet, data);
|
|
8
|
+
const _array_buffer = (await workbook_creator.getXLSXWorkbookBuffer(_workbook));
|
|
9
|
+
return _array_buffer;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Returns an array of all
|
|
14
|
+
*/
|
|
15
|
+
async function getWorkbookData(data) {
|
|
16
|
+
const workbook_creator = new WorkbookCreator();
|
|
17
|
+
let _workbook = await workbook_creator.loadXLSX(data);
|
|
18
|
+
let _worksheet = _workbook.worksheets[0];
|
|
19
|
+
|
|
20
|
+
let rows_data = [];
|
|
21
|
+
_worksheet.eachRow((row) => {
|
|
22
|
+
rows_data.push(row.values);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return rows_data;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = {
|
|
29
|
+
generateXLSXBuffer,
|
|
30
|
+
getWorkbookData
|
|
31
|
+
}
|
package/workbook_creator.js
CHANGED
|
@@ -1,167 +1,164 @@
|
|
|
1
|
-
const ExcelJS = require("exceljs");
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
constructor() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
workbook.
|
|
14
|
-
workbook.
|
|
15
|
-
workbook.
|
|
16
|
-
workbook.
|
|
17
|
-
workbook.
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
* @param {
|
|
68
|
-
* @
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
let
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
*
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
*
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
*
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
*
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
*
|
|
147
|
-
* @
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
*
|
|
157
|
-
* @
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
module.exports = WorkbookCreator;
|
|
1
|
+
const ExcelJS = require("exceljs");
|
|
2
|
+
|
|
3
|
+
class WorkbookCreator {
|
|
4
|
+
constructor() {}
|
|
5
|
+
/**
|
|
6
|
+
* Create a new workbook
|
|
7
|
+
* @returns {ExcelJS.Workbook} The created workbook
|
|
8
|
+
*/
|
|
9
|
+
createWorkbook() {
|
|
10
|
+
const workbook = new ExcelJS.Workbook();
|
|
11
|
+
workbook.creator = "Gatekeeper Technology";
|
|
12
|
+
workbook.lastModifiedBy = "Gatekeeper Technology";
|
|
13
|
+
workbook.created = new Date();
|
|
14
|
+
workbook.modified = new Date();
|
|
15
|
+
// workbook.properties.date1904 = true;
|
|
16
|
+
workbook.calcProperties.fullCalcOnLoad = true;
|
|
17
|
+
// workbook.lastPrinted = new Date(2016, 9, 27);
|
|
18
|
+
|
|
19
|
+
workbook.views = [
|
|
20
|
+
{
|
|
21
|
+
x: 0,
|
|
22
|
+
y: 0,
|
|
23
|
+
width: 10000,
|
|
24
|
+
height: 20000,
|
|
25
|
+
firstSheet: 0,
|
|
26
|
+
activeTab: 1,
|
|
27
|
+
visibility: "visible",
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
return workbook;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Create a new Worksheet
|
|
36
|
+
* @param {ExcelJS.Workbook} workbook Workbook
|
|
37
|
+
* @returns {ExcelJS.Worksheet} The created Worksheet
|
|
38
|
+
*/
|
|
39
|
+
createWorksheet(workbook, worksheet_name) {
|
|
40
|
+
const worksheet = workbook.addWorksheet(worksheet_name ? worksheet_name : "sheet", {
|
|
41
|
+
pageSetup: { paperSize: 9, orientation: "landscape" },
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return worksheet;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Create a new workbook
|
|
49
|
+
* @param {ExcelJS.Worksheet} worksheet Worksheet
|
|
50
|
+
* @param {string[][]} data Data array
|
|
51
|
+
* @returns {ExcelJS.Worksheet} The created workbook
|
|
52
|
+
*/
|
|
53
|
+
loadDataIntoWorksheet(worksheet, data) {
|
|
54
|
+
for (let [_index, _row_data] of data.entries()) {
|
|
55
|
+
// Get a row object. If it doesn't already exist, a new empty one will be returned
|
|
56
|
+
let row = worksheet.getRow(_index + 1);
|
|
57
|
+
row.values = _row_data;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return worksheet;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Load data into worksheet with row offset
|
|
65
|
+
* @param {ExcelJS.Worksheet} worksheet Worksheet
|
|
66
|
+
* @param {string[][]} data Data array
|
|
67
|
+
* @param {number} offset Number of rows to skip before writing data
|
|
68
|
+
* @returns {ExcelJS.Worksheet} The created Worksheet
|
|
69
|
+
*/
|
|
70
|
+
loadDataIntoWorksheetWithRowOffset(worksheet, data, row_offset) {
|
|
71
|
+
for (let [_index, _row_data] of data.entries()) {
|
|
72
|
+
let current_row_index = _index + row_offset;
|
|
73
|
+
// Get a row object. If it doesn't already exist, a new empty one will be returned
|
|
74
|
+
let row = worksheet.getRow(current_row_index + 1);
|
|
75
|
+
row.values = _row_data;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return worksheet;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Save workbook as XLSX
|
|
83
|
+
* @param {ExcelJS.Workbook} workbook Workbook
|
|
84
|
+
* @param {string} filename The filename
|
|
85
|
+
*/
|
|
86
|
+
async saveXLSXWorkbook(workbook, filename) {
|
|
87
|
+
await workbook.xlsx.writeFile(filename);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Get array buffer data
|
|
92
|
+
* @param {ExcelJS.Workbook} workbook Workbook
|
|
93
|
+
*/
|
|
94
|
+
async getXLSXWorkbookBuffer(workbook) {
|
|
95
|
+
// write to a new buffer
|
|
96
|
+
const uint8array = await workbook.xlsx.writeBuffer();
|
|
97
|
+
return uint8array.buffer;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Converts Workbook Buffer into a ExcelJS.Workbook
|
|
102
|
+
* @param {Buffer} workbook_buffer - Workbook data in a Buffer
|
|
103
|
+
* @returns {Promise<ExcelJS.Workbook>}
|
|
104
|
+
*/
|
|
105
|
+
async loadXLSX(workbook_buffer) {
|
|
106
|
+
const workbook = new ExcelJS.Workbook();
|
|
107
|
+
await workbook.xlsx.load(workbook_buffer);
|
|
108
|
+
|
|
109
|
+
return workbook;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Get the workbook's details
|
|
114
|
+
* @param {ExcelJS.Workbook} workbook
|
|
115
|
+
* @returns {Object} An object containing information of the workbook
|
|
116
|
+
*/
|
|
117
|
+
getWorkbookDetails(workbook) {
|
|
118
|
+
if (!workbook) return null;
|
|
119
|
+
return {
|
|
120
|
+
created: workbook.created,
|
|
121
|
+
modified: workbook.modified,
|
|
122
|
+
title: workbook.title,
|
|
123
|
+
creator: workbook.creator,
|
|
124
|
+
company: workbook.company,
|
|
125
|
+
description: workbook.description,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Get the worksheet's details
|
|
131
|
+
* @param {ExcelJS.Worksheet} worksheet
|
|
132
|
+
* @returns {Object} An object containing information of the worksheet
|
|
133
|
+
*/
|
|
134
|
+
getWorksheetDetails(worksheet) {
|
|
135
|
+
return {
|
|
136
|
+
id: worksheet.id,
|
|
137
|
+
properties: worksheet.properties,
|
|
138
|
+
name: worksheet.name,
|
|
139
|
+
state: worksheet.state,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Gets worksheet with specified name within workbook
|
|
145
|
+
* @param {ExcelJS.Workbook} workbook
|
|
146
|
+
* @param {string} worksheet_name
|
|
147
|
+
* @returns {ExcelJS.Worksheet} Worksheet with specified name
|
|
148
|
+
*/
|
|
149
|
+
getWorksheetByName(workbook, worksheet_name) {
|
|
150
|
+
return workbook.getWorksheet(worksheet_name);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Gets worksheet at specified index within workbook
|
|
155
|
+
* @param {ExcelJS.Workbook} workbook
|
|
156
|
+
* @param {number} index
|
|
157
|
+
* @returns {ExcelJS.Worksheet} Worksheet at specified index
|
|
158
|
+
*/
|
|
159
|
+
getWorksheetByIndex(workbook, worksheet_index) {
|
|
160
|
+
return workbook.worksheets[worksheet_index];
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
module.exports = WorkbookCreator;
|