/**
* EXCEL转JSON
* 需要先安装xlsx模块:npm i xlsx
* 执行命令:node excel.js test.xlsx Sheet1 outer.json
* 参数1(必填) EXCEL路径
* 参数2(必填) 表名
* 参数3(选填) 生成的JSON文件名
*/
let arguments = process.argv.splice(2);
if (!Array.isArray(arguments) || arguments.length < 2) {
return void console.log("缺少参数,参考命令示例:node excel.js test.xlsx Sheet1 outer.json");
}
try {
let fs = require('fs');
let xl = require('xlsx');
//获取参数
let filePath = arguments[0];
let sheetName = arguments[1];
//读取EXCEL
let workbook = xl.readFileSync(filePath);
let worksheet = workbook.Sheets[sheetName];
//解析成json数据
let data = xl.utils.sheet_to_json(worksheet);
console.log("表格解析成功,正在转为JSON文件...");
//输出JSON文件
let jsonName = arguments[2] ? arguments[2] : "outer.json";
let newData = JSON.stringify(data);
let docData = JSON.parse(newData);
let currentData = docData.map((item) => {
return {
id: item.id + "",
name: encodeUnicode(item.name)
}
});
fs.writeFile(jsonName, JSON.stringify(currentData), (err) => {
if (err) {
console.log("写入JSON文件时出错, 请重试");
} else {
console.log("已成功生成JSON文件:" + jsonName);
}
});
} catch (e) {
console.log(e);
}
// Unicode 编码格式
function encodeUnicode(str) {
var res = [];
for ( var i=0; i<str.length; i++ ) {
res[i] = ( "00" + str.charCodeAt(i).toString(16) ).slice(-4);
}
return `\\u` + res.join(`\\u`);
}