准备一个名叫 node.xlsx
的表格
里面有2个sheet,内容分别如下:
代码:
var xlsx = require("node-xlsx"),
fs = require('fs'),
obj = xlsx.parse("job.xlsx");
var lastJson = []; // 最后存入的内容
obj.forEach(function(item,index){
lastJson[index] = returnJson(item['data']);
})
//这里要用JSON.stringify转成string
fs.writeFile("./src/assets/job.json", JSON.stringify(lastJson), error => {
if (error) return console.log("写入文件失败,原因是" + error.message);
console.log("写入成功");
});
function returnJson(arr){
// 去除空数组
var s = arr.filter(function(item){
return item.length > 0;
});
// 数组改成json返回
var title = ['id','img','title'],arrs = [];
for(var i in s){
var map = {};
for(var j in arr[i]){
map[title[j]] = arr[i][j];
}
arrs.push(map);
}
return arrs;
}
最后得到结果
这里是个多维数组,分别对应几个sheet.
如果sheet 很多可以稍微修改一下代码
var lastJson = [] // 最后存入的内容 ,这里也可以用{}的方式 ,看自己需要
obj.forEach(function(item,index){
if(lastJson.length == 0){
lastJson = returnJson(item['data'],item['name']);
}else{
lastJson = lastJson.concat( returnJson( item['data'],item['name']) );
}
// lastJson = {}
lastJson[item['name']] = returnJson(item['data']);
})
... returnJson 中添加参数,sheet名,取用的时候根据type 类型判断
var title = ['id','img','title'],arrs = [];
for(var i in s){
var map = {};
for(var j in arr[i]){
map[title[j]] = arr[i][j];
map['type'] = type;
}
arrs.push(map);
}