-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexcelToJSON.js
More file actions
63 lines (55 loc) · 1.46 KB
/
excelToJSON.js
File metadata and controls
63 lines (55 loc) · 1.46 KB
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
57
58
59
60
61
62
63
var xlsx = require('xlsx');
var fs = require('fs');
//file to process
var file = ''
//file to output
var output = "node_out.txt"
var result = run(file)
fs.writeFile(output, JSON.stringify(result), function(err) {
if(err) {
return console.log(err);
}
});
function run(file){
var json = {}
json[file] = arrayPrint(file)
return json
}
function csvRead(file){
return fs.readFileSync(file).toString().split("\n")
}
function excelsheetRead(workbook, sheet_name){
var csv = xlsx.utils.sheet_to_csv(workbook.Sheets[sheet_name])
return csv.split("\n")
}
function rowArrayToArray(rowArray) {
var splitArray = []
rowArray.forEach(function(row) {
if(row != ""){
var row_s = row.split(",")
splitArray.push(row_s)
}
})
return splitArray
}
function arrayPrint(file, excel) {
var jsonObj = {}
if(file.endsWith(".xls") || file.endsWith(".xlsx")){
jsonObj['size'] = {}
var workbook = xlsx.readFile(file)
workbook.SheetNames.forEach(function(sheet_name) {
var worksheet = workbook.Sheets[sheet_name]
if(Object.keys(worksheet).length != 0){
jsonObj['size'][sheet_name] = worksheet["!ref"]
}
jsonObj[sheet_name] = rowArrayToArray(excelsheetRead(workbook, sheet_name))
})
}
else if (file.endsWith(".csv")){
jsonObj['csv'] = rowArrayToArray(csvRead(file))
}
else {
console.log("Not a CSV or Excel File")
}
return jsonObj
}