-
Notifications
You must be signed in to change notification settings - Fork 0
/
excel.js
38 lines (34 loc) · 1.17 KB
/
excel.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
const xlsx = require('xlsx');
const input = require('./input');
const colors = require('colors');
module.exports = {
getRows,
saveRows,
}
const xlsxOptions = { cellStyles: true };
/**
*
* @param {*} filename
* @returns { [ { AccessRequired: string, Department: string, Person: string, Timestamp: number, Generated: Date }] }
*/
function getRows(filename) {
const workbook = xlsx.readFile(filename, xlsxOptions);
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const cells = xlsx.utils.sheet_to_json(worksheet);
return cells;
}
async function saveRows(rows, filename) {
let success = false;
while (!success) {
try {
const workbook = xlsx.readFile(filename, xlsxOptions);
const worksheet = xlsx.utils.json_to_sheet(rows);
workbook.Sheets[workbook.SheetNames[0]] = worksheet;
xlsx.writeFile(workbook, filename, xlsxOptions);
success = true;
} catch (e) {
console.log(colors.red(`\nError: ${e.message}`));
await input.askQuestion('This could be because you have the file open.\nPlease close the file and press enter to try again.')
}
}
}