1表格格式
支持number、string、boolean、object和array格式
number | string | object | array | boolean |
level | name | enemy | difficulty | isBoss |
关卡 | 名称 | 怪物 | 难度 | 是否有boss |
1 | 初始之地 | {"id":1,"delay":5000,"num":10} | [0,1] | FALSE |
2 | 新手试炼场 | {"id":2,"delay":5000,"num":10} | [0,1] | TRUE |
3 | 魔法洞穴 | {"id":3,"delay":1000,"num":10} | [1,2,4] | FALSE |
4 | 终极之地 | {"id":4,"delay":5000,"num":100} | [5, 6, 7] | TRUE |
2配置文件
支持多个表格文件读取
module.exports = configPath = [{
excelFileUrl: "./data.xlsx",
jsonDataFileUrl: "./json/",
jsFileUrl: "./js/"
}, {
excelFileUrl: "./data2.xlsx",
jsonDataFileUrl: "./json2/",
jsFileUrl: "./js2/"
}]
3核心脚本
使用时需要先执行npm i node-xlsx安装库
使用时在该文件下新建终端,执行node excelToJson命令即可
var xlsx = require("node-xlsx");
var fs = require("fs");
var config = require("./configPath");
module.exports = function main() {
for (let fileConfig of config) {
// 解析excel数据为对象数值格式,
// 数据格式为[{name:"xx",data:[["x", "y"],[1, 2]]},{name:"xx",data:[["xx", "xx"],[1, 2]]}]
let objArr = xlsx.parse(fileConfig.excelFileUrl);
// console.log(JSON.stringify(objArr));
// 处理数据
for (let obj of objArr) {
let dataArr = obj.data;
if (dataArr.length <= 3) { // 每个表格至少应该包含三行头部数据
console.log(dataArr.length);
continue;
}
let jsonObjArr = [];
for (let i = 3; i < dataArr.length; i++) {
let item = {};
for (let j = 0; j < dataArr[i].length; j++) {
if (dataArr[0][j] == "array" || dataArr[0][j] == "object") {
item[dataArr[1][j]] = JSON.parse(dataArr[i][j]);
} else {
item[dataArr[1][j]] = dataArr[i][j];
}
}
jsonObjArr.push(item);
}
let jsonObjArrStr = JSON.stringify(jsonObjArr);
if (!fs.existsSync(fileConfig.jsonDataFileUrl)) { // 没有路径则先创建一个
fs.mkdirSync(fileConfig.jsonDataFileUrl);
}
// 写入json格式的文件
fs.writeFile(`${fileConfig.jsonDataFileUrl}${obj.name}.json`, jsonObjArrStr, function (err) {
if (err) throw err;
console.log(obj.name + "表生成json数据成功!");
});
var jsStr = `(function () {\n\t"use strict";\n\tvar ${obj.name} = ${jsonObjArrStr};\n\twindow.${obj.name} = ${obj.name};\n})();`;
if (!fs.existsSync(fileConfig.jsFileUrl)) { // 没有路径则先创建一个
fs.mkdirSync(fileConfig.jsFileUrl);
}
// 写入js格式文件
fs.writeFile(`${fileConfig.jsFileUrl}${obj.name}.js`, jsStr, function (err) {
if (err) throw err;
console.log(`${obj.name}.js文件生成成功!`);
});
}
}
}();