node 小工具之 - 读xlsx到json

准备一个名叫 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);
}
发布了62 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_37026254/article/details/96330974
今日推荐