@gatekeeper_technology/excel-utils 1.0.0 → 1.0.1

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.
Files changed (2) hide show
  1. package/index.js +158 -0
  2. package/package.json +2 -2
package/index.js CHANGED
@@ -0,0 +1,158 @@
1
+ import ExcelJS from "exceljs";
2
+
3
+ module.exports = {
4
+ getWorkbookData,
5
+ generateXLSXBuffer,
6
+ WorkbookCreator
7
+ }
8
+
9
+ class WorkbookCreator {
10
+ constructor() {
11
+
12
+ }
13
+ /**
14
+ * Create a new workbook
15
+ * @returns {ExcelJS.Workbook} The created workbook
16
+ */
17
+ createWorkbook() {
18
+ const workbook = new ExcelJS.Workbook();
19
+ workbook.creator = "Gatekeeper Technology";
20
+ workbook.lastModifiedBy = "Gatekeeper Technology";
21
+ workbook.created = new Date();
22
+ workbook.modified = new Date();
23
+ workbook.properties.date1904 = true;
24
+ workbook.calcProperties.fullCalcOnLoad = true;
25
+ // workbook.lastPrinted = new Date(2016, 9, 27);
26
+
27
+ workbook.views = [
28
+ {
29
+ x: 0,
30
+ y: 0,
31
+ width: 10000,
32
+ height: 20000,
33
+ firstSheet: 0,
34
+ activeTab: 1,
35
+ visibility: "visible",
36
+ },
37
+ ];
38
+
39
+ return workbook;
40
+ }
41
+
42
+ /**
43
+ * Create a new workbook
44
+ * @param {ExcelJS.Workbook} workbook Workbook
45
+ * @returns {ExcelJS.Worksheet} The created workbook
46
+ */
47
+ createWorksheet(workbook, worksheet_name) {
48
+ const worksheet = workbook.addWorksheet(worksheet_name ? worksheet_name : 'sheet', {
49
+ pageSetup: { paperSize: 9, orientation: "landscape" },
50
+ });
51
+
52
+ return worksheet;
53
+ }
54
+
55
+ /**
56
+ * Create a new workbook
57
+ * @param {ExcelJS.Worksheet} worksheet Worksheet
58
+ * @param {string[][]} data Data array
59
+ * @returns {ExcelJS.Worksheet} The created workbook
60
+ */
61
+ loadDataIntoWorksheet(worksheet, data) {
62
+ for (let [_index, _row_data] of data.entries()) {
63
+ // Get a row object. If it doesn't already exist, a new empty one will be returned
64
+ let row = worksheet.getRow(_index + 1);
65
+ row.values = _row_data;
66
+ }
67
+
68
+ return worksheet;
69
+ }
70
+
71
+ /**
72
+ * Save workbook as XLSX
73
+ * @param {ExcelJS.Workbook} workbook Workbook
74
+ * @param {string} filename The filename
75
+ */
76
+ async saveXLSXWorkbook(workbook, filename) {
77
+ await workbook.xlsx.writeFile(filename);
78
+ }
79
+
80
+ /**
81
+ * Get array buffer data
82
+ * @param {ExcelJS.Workbook} workbook Workbook
83
+ */
84
+ async getXLSXWorkbookBuffer(workbook) {
85
+ // write to a new buffer
86
+ const uint8array = (await workbook.xlsx.writeBuffer());
87
+ return uint8array.buffer;
88
+ }
89
+
90
+ /**
91
+ * Converts Workbook Buffer into a ExcelJS.Workbook
92
+ * @param {Buffer} workbook_buffer - Workbook data in a Buffer
93
+ * @returns {Promise<ExcelJS.Workbook>}
94
+ */
95
+ async loadXLSX(workbook_buffer) {
96
+ const workbook = new ExcelJS.Workbook();
97
+ await workbook.xlsx.load(workbook_buffer);
98
+
99
+ return workbook;
100
+ }
101
+
102
+ /**
103
+ * Get the workbook's details
104
+ * @param {ExcelJS.Workbook} workbook
105
+ * @returns {Object} An object containing information of the workbook
106
+ */
107
+ getWorkbookDetails(workbook) {
108
+ if (!workbook) return null;
109
+ return {
110
+ created: workbook.created,
111
+ modified: workbook.modified,
112
+ title: workbook.title,
113
+ creator: workbook.creator,
114
+ company: workbook.company,
115
+ description: workbook.description,
116
+ };
117
+ }
118
+
119
+ /**
120
+ * Get the worksheet's details
121
+ * @param {ExcelJS.Worksheet} worksheet
122
+ * @returns {Object} An object containing information of the worksheet
123
+ */
124
+ getWorksheetDetails(worksheet) {
125
+ return {
126
+ id: worksheet.id,
127
+ properties: worksheet.properties,
128
+ name: worksheet.name,
129
+ state: worksheet.state,
130
+ };
131
+ }
132
+
133
+ }
134
+
135
+ async function generateXLSXBuffer(data, sheet_name) {
136
+ const workbook_creator = new WorkbookCreator();
137
+ let _workbook = workbook_creator.createWorkbook();
138
+ let _worksheet = workbook_creator.createWorksheet(_workbook, sheet_name);
139
+ workbook_creator.loadDataIntoWorksheet(_worksheet, data);
140
+ const _array_buffer = (await workbook_creator.getXLSXWorkbookBuffer(_workbook));
141
+ return _array_buffer;
142
+ }
143
+
144
+ /**
145
+ * Returns an array of all
146
+ */
147
+ async function getWorkbookData(data) {
148
+ const workbook_creator = new WorkbookCreator();
149
+ let _workbook = await workbook_creator.loadXLSX(data);
150
+ let _worksheet = _workbook.worksheets[0];
151
+
152
+ let rows_data = [];
153
+ _worksheet.eachRow((row) => {
154
+ rows_data.push(row.values);
155
+ });
156
+
157
+ return rows_data;
158
+ }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@gatekeeper_technology/excel-utils",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Gatekeeper's excel Utils - shared in NPM",
5
5
  "author": "David Holtzhausen",
6
- "main": "./index.js",
6
+ "main": "index.js",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/gatekeeper-technology/excel-utils.git"